0-6ren">
gpt4 book ai didi

php - 防止并发循环运行

转载 作者:行者123 更新时间:2023-11-30 00:53:34 25 4
gpt4 key购买 nike

我有一个如下所示的函数

$q = "SELECT * FROM tbl1 WHERE proc=0";
$r = mysql_query($q);
if (mysql_num_rows($r) > 0) {
while ($row = mysql_fetch_assoc($r)) {
mysql_query('UPDATE SET proc=0 FROM tbl1 id=' . $row['id']);
mysql_query("INSERT INTO tbl2(value,tbl_id) VALUE (1,$row['id'])");
}
}

现在在并发 session 中,我将面临一个问题。“将为 tbl2 插入两行,但我想要一行!”

出于技术原因,我无法使用 limit 或 WHERE 进行 SELECT。

现在我想知道如何在我的情况下预防这个问题。

编辑:我的问题是“SELECT * FROM tbl1 where proc=0”;在两个并发 session 中将返回相同的内容,例如每个 session 将返回 10 行。但我想防止两个 session 同时运行循环!我使用创建文件并检查是否退出或更新数据库中的字段并检查是否允许继续。但它们都不能阻止在同一 session 上运行。

更新2:这只是一个展示我的想法的示例,函数不是我使用的,但通常这显示了我的问题和脚本流数据架构。

最佳答案

好吧,然后添加一个 break 并跳出 while 循环.. 在这里这样做

while($row=mysql_fetch_assoc($r)){
mysql_query('UPDATE SET proc=0 FROM tbl1 id='.$row['id']);
mysql_query("INSERT INTO tbl2(value,tbl_id) VALUE (1,$row['id'])");
break; //<--- Add here
}

免责声明:您正在使用过时的数据库 API,即已弃用的 mysql_* 函数。切换到 MySQLiPDO

关于php - 防止并发循环运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20774432/

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