[英]MySQL Connection Closing During Parallel Cron Tasks
我根據這兩篇博客文章為並行任務編寫了一個基於 Zend Framework 的 cron 服務:
總之,cron 服務使用pcntl_fork()
來並行生成任務。
使用該服務運行單個任務沒有問題,但是當我添加第二個任務時,我收到此 MySQL 錯誤:
一般錯誤:2006 MySQL 服務器已消失
我最好的猜測是一個子線程在另一個之前結束,並且 MySQL 連接被隱式關閉。 如果是這種情況,我如何確保連接保持打開狀態,直到父線程關閉?
在閱讀了關於pcntl_fork()
的評論和這個SO question之后,確實是孩子共享父連接的問題。 我已添加此代碼以在分叉后創建新的 MySQL 連接,它似乎已經解決了問題:
// give this thread its own db connection
$settings = Zend_Registry::get('settings');
$db = Zend_Db::factory(
$settings->db_adapter,
array(
'host' => $settings->db_host,
'username' => $settings->db_user,
'password' => $settings->db_pass,
'dbname' => $settings->db_name,
)
);
$db->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Db_Table::setDefaultAdapter($db);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.