Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql锁定时分叉进程_Php_Mysql_Cakephp - Fatal编程技术网

Php mysql锁定时分叉进程

Php mysql锁定时分叉进程,php,mysql,cakephp,Php,Mysql,Cakephp,我正在用cakephp编写一个shell脚本,它处理mysql数据库中的一个项目队列。为了加快进程,我使用pcntlfork,如下所示: $pids = array(); $i = 0; for($i = 0; $i < count($queue); $i++) { $pids[$i] = pcntl_fork(); if(!$pids[$i]) { # do code exit(); } } 这个实现不起

我正在用cakephp编写一个shell脚本,它处理mysql数据库中的一个项目队列。为了加快进程,我使用pcntlfork,如下所示:

$pids = array();
$i = 0;
for($i = 0; $i < count($queue); $i++) 
{

     $pids[$i] = pcntl_fork();

      if(!$pids[$i]) {
        # do code
        exit();
      } 
    }
这个实现不起作用,给我一个错误“一般错误:mysql服务器已经消失”。这是因为孩子们失去了联系。这似乎是php中fork本身的一个缺陷


我的问题是,有没有更好的解决方案来锁定这个进程,直到它完成,然后释放它供其他shell脚本执行?

我找到了最好的解决方案来确保程序不会调用和执行自身的实例。我将在php中使用信号量来锁定程序

以下是关于信号量的简短教程:

如果将MySQL连接的打开/关闭移动到子线程内部会发生什么?是的,这是一个建议的修复方法,我还想知道打开持久连接是否会解决问题。我会试着回去
$this->Queue->query("SELECT GET_LOCK('".$this->mysqlLock."', ".$this->mysqlLockTime.") AS 'GetLock'");