我在使用Apache的Passenger上生產Rails 3應用程序。我有這樣的代碼:在Ruby on Rails中使用fork來創建並行進程
class Billing < ActiveRecord::Base
after_save :sendEmails
private
def sendEmails
fork do
UserMailer.clientBilling(self.user, self).deliver
end
end
end
在本地主機,當應用程序創建一個結算,它被保存後,該應用程序將電子郵件發送到用戶,一切工作正常。但在服務器中,在應用程序創建賬單之後,它會拋出與MySQL MySQL相關的錯誤,「MySQL服務器已經消失」或「連接丟失」等錯誤,並且應用程序不會發送電子郵件。如果我刪除它的工作正常,但我想使用叉,我想創建一個分離的過程,因爲它需要很長時間發送電子郵件。可能是什麼問題呢?
你知道哪些資源被繼承嗎?我認爲一個流程叉複製整個過程?是不是整個軌道環境再次裝上叉子? – 2012-01-22 14:10:00
它複製整個過程,但文件描述符引用完全相同的文件(請參閱fork的手冊頁) – 2012-01-22 15:26:51
我發現'establish_connection'並不總是必需的,因爲ActiveRecord通常會透明地管理它。 – spume 2016-08-31 14:46:29