2012-09-28 33 views
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脚本?

+0

如果MySQL连接的开/关移到孩子线程内发生了什么? –

+0

是的,这是一个建议的修复,我也想知道是否打开一个持续连接,如果这将解决问题。我会尽力回复 – Sixthpoint

回答