实时循环问题

时间:2011-07-11 14:18:31

标签: php mysql pdo

我有实时循环问题。在进行下一次迭代时,它应首先检查status以获得更新(status= 0),然后再进行下一次迭代。

状态字段可能会在其他地方更新...

例如:

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

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    print_r($row);
    print("\n\n");
    sleep(5);
}
?>

当php脚本正在运行/循环时,在mysql控制台中,我很快就做到了:

UPDATE data SET status = 1

即使我已更新状态,它仍会显示所有记录。如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

结果集仅计算一次。如果要查看中间更新,则需要发出另一个SELECT语句。

答案 1 :(得分:0)

当您进入while循环时,您已经离开数据库,现在只需显示已发回的内容。

答案 2 :(得分:0)

每次要获取新数据时,都必须查询数据库。否则,您只会重新迭代旧的提取数据。

<?php
$SQL = "SELECT * FROM data WHERE status = 0";

while (true) { // set the condition you need here (eg: time)

    // I don't know PDO enough to know if prepare can be executed out of the loop
    $query = $db->prepare($SQL);

    // re-query the database to get the new statuses
    $query->execute();

    // process the data
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
        print_r($row);
        print("\n\n");
    }

    // sleep when all the row have been processed
    sleep(5);
}
?>