gpt4 book ai didi

php - MySQL 连接在并行 Cron 任务期间关闭

转载 作者:行者123 更新时间:2023-11-29 00:55:35 24 4
gpt4 key购买 nike

我已经根据这两篇博客文章为并行任务编写了一个基于 Zend Framework 的 cron 服务:

总而言之,cron 服务使用 pcntl_fork() 并行生成任务。

使用该服务运行单个任务没有问题,但是当我添加第二个任务时,出现此 MySQL 错误:

General error: 2006 MySQL server has gone away

我最好的猜测是一个子线程先于另一个子线程结束并且 MySQL 连接被隐式关闭。如果是这种情况,我如何确保连接保持打开状态直到父线程关闭?

最佳答案

阅读关于 pcntl_fork() 的评论后还有这个SO question ,这确实是 child 共享父连接的问题。我已经添加了这段代码以在 fork 后创建一个新的 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);

关于php - MySQL 连接在并行 Cron 任务期间关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6309860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com