gpt4 book ai didi

php - 在 mysql 锁定时 fork 进程

转载 作者:行者123 更新时间:2023-11-29 03:07:55 25 4
gpt4 key购买 nike

我正在使用 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();
}
}

当此代码正在执行时,shell 脚本可能会在当前脚本有时间从队列中删除项目之前运行。我正在使用 mysql 并像这样锁定表:

$this->Queue->query("SELECT GET_LOCK('".$this->mysqlLock."', ".$this->mysqlLockTime.") AS 'GetLock'");

此实现不起作用,给我错误“一般错误:mysql 服务器已消失”。这是因为 child 失去了联系。这似乎是 php 中 fork 本身的一个缺陷。

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

最佳答案

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

这是一个关于信号量的简短教程: http://www.re-cycledair.com/php-dark-arts-semaphores

关于php - 在 mysql 锁定时 fork 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645650/

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