我已经写了基于这两个博客文章并行任务Zend框架基于cron服务:
- 在Zend框架的应用程序的后台任务
- 在并行Zend框架的后台任务
综上所述,cron的服务使用pcntl_fork()
产卵的任务并行。
运行单个任务与服务工作没有问题,但是当我添加第二个任务,我得到这个MySQL错误:
一般错误:2006年MySQL服务器已消失
我最好的猜测是,一个子线程之前,另一端与MySQL连接是隐式关闭。 如果是这样的话,我该如何确保连接保持打开状态,直到父线程关闭?
我已经写了基于这两个博客文章并行任务Zend框架基于cron服务:
综上所述,cron的服务使用pcntl_fork()
产卵的任务并行。
运行单个任务与服务工作没有问题,但是当我添加第二个任务,我得到这个MySQL错误:
一般错误:2006年MySQL服务器已消失
我最好的猜测是,一个子线程之前,另一端与MySQL连接是隐式关闭。 如果是这样的话,我该如何确保连接保持打开状态,直到父线程关闭?
阅读上的评论后pcntl_fork()
这个和SO问题 ,它的确是与孩子共享父连接的问题。 我加入这个代码来创建分叉后,一个新的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);