簡體   English   中英

MySQL 在並行 Cron 任務期間連接關閉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM