समस्या यह है कि एक फोर्कड प्रक्रिया अपने माता-पिता के कुछ संसाधनों को प्राप्त करती है, जैसे कि इसके फाइल डिस्क्रिप्टर। विशेष रूप से ऐसा एक साझा संसाधन MySQL कनेक्शन है। जब चाइल्ड प्रोसेस अपना ईमेल भेजना समाप्त कर देता है और बाहर निकल जाता है तो यह MySQL कनेक्शन को बंद कर देता है, जो पैरेंट प्रोसेस कनेक्शन को बंद कर देता है।
यदि आप इस पथ को जारी रखते हैं (और यह समान सूक्ष्मताओं से भरा हुआ है) तो आपको कुछ ऐसा करने की आवश्यकता है:
# Clear existing connections before forking to ensure they do not get inherited.
::ActiveRecord::Base.clear_all_connections!
fork do
# Establish a new connection for each fork.
::ActiveRecord::Base.establish_connection
# The rest of the code for each fork...
end
यदि आप उनका उपयोग करते हैं तो आपको memcached या mongodb जैसी सेवाओं के साथ भी ऐसा ही करना होगा।