2
我正在处理我的mysql数据库中的项目队列的cakephp中的shell脚本。虽然这个代码执行shell脚本当前脚本有时间从队列中删除项目之前可能运行当mysql锁定时分叉进程
$pids = array();
$i = 0;
for($i = 0; $i < count($queue); $i++)
{
$pids[$i] = pcntl_fork();
if(!$pids[$i]) {
# do code
exit();
}
}
:为加快我使用pcntlfork像这样的过程。我正在使用mysql和锁定表如下:
$this->Queue->query("SELECT GET_LOCK('".$this->mysqlLock."', ".$this->mysqlLockTime.") AS 'GetLock'");
此实现不起作用给我的错误“一般错误:mysql服务器已经消失”。这是因为连接丢失在孩子们身上。它似乎是叉内本身在PHP中的缺陷。
我的问题是有更好的解决方案来锁定这个进程,直到它完成,然后释放它来执行其他shell脚本?
如果MySQL连接的开/关移到孩子线程内发生了什么? –
是的,这是一个建议的修复,我也想知道是否打开一个持续连接,如果这将解决问题。我会尽力回复 – Sixthpoint