当前位置: 首页 > 面试题库 >

同时运行多个PHP脚本(数据库循环问题)

酆乐湛
2023-03-14
问题内容

我同时运行10个PHP脚本,并且在Linux上在后台处理。

例如:

while ($i <=10) {
 exec("/usr/bin/php-cli run-process.php > /dev/null 2>&1 & echo $!");
 sleep(10);
 $i++;
}

在中run- process.php,我遇到了数据库循环问题。其中一个进程可能已经将该status字段更新为1,似乎其他php脚本进程没有看到它。例如:

$SQL = "SELECT * FROM data WHERE status = 0";
$query = $db->prepare($SQL);
$query->execute();

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    $SQL2 = "SELECT status from data WHERE number = " . $row['number'];
    $qCheckAgain = $db->prepare($SQL2);
    $qCheckAgain->execute();
    $tempRow = $qCheckAgain->fetch(PDO::FETCH_ASSOC);

    //already updated from other processs?
    if ($tempRow['status'] == 1) {
        continue;
    }

    doCheck($row)
    sleep(2)
}

如何确保流程不会再次重做相同的数据?


问题答案:

当您有多个流程时,您需要让每个流程都拥有某些记录集的“所有权”。通常,您可以通过使用limit子句进行更新,然后选择脚本“拥有”的记录来完成此操作。

例如,有一个字段指定记录是否可用于处理(即,值为0表示该记录可用)。然后,您的更新会将字段的值设置为脚本进程ID,或该进程的某些其他唯一编号。然后,您在进程ID上进行选择。完成处理后,可以将其设置为“完成”数字,例如1.更新,选择,更新,重复。



 类似资料:
  • 问题内容: 如何运行多个python脚本?此刻我像这样跑一个。 我已经尝试过了,但是不起作用:仅运行第一个脚本。另外,我尝试使用这样的单个文件; 但是,这也不起作用。 问题答案: 使用Bash: 这就是整个脚本。它将同时运行两个Python脚本。 Python本身可以做同样的事情,但要花更多的时间输入,对于眼前的问题来说是一个不好的选择。 我认为尽管您采取错误的方法来解决问题很可能,但我想听听您的

  • 我有客户端和服务器在一个单独的文件夹。我认为客户端脚本有错误。有谁能帮我解决问题。我想同时运行客户端和服务器。谢谢 我的文件夹结构 package.json在服务器文件夹内部

  • 问题内容: 我正在尝试创建86个task.py实例以同时运行。 问题答案: 等待命令完成。改为使用:

  • 我对PHP脚本和MySQL的行为很好奇?脚本基本上是两个SQL查询。 第一个从由某个id决定的特定行的列中选择并获取一个数字。 然后,如果数字为正数,则第二个将通过减去某个量来更新列。 很明显,这是一个典型的例子,我会使用事务、锁、互斥体等等。 我的问题是:在一个网站中,两个或更多的用户完全有可能同时调用同一行的脚本。如果不使用事务或锁定表,PHP将如何处理?它们是两个查询/函数调用,但它们在一个

  • 我正在sql plus中运行一个脚本,脚本中有一个for循环: 运行脚本时出现以下错误: ORA-06550:第6行第1列:PLS-00103:遇到符号“开始” 我哪里做错了?

  • 问题内容: 我可以仅在AngularJs中使用一个数组同时遍历两个数组吗?如果是这样,那又如何? 例如我有两个数组 它应该能够为两个数组产生相同的索引。 问题答案: 如果要使用第一个数组的索引访问第二个数组,请尝试以下操作: 看到这个小提琴:http : //jsfiddle.net/dm9zhgx9/