【发布时间】:2012-11-15 07:32:03
【问题描述】:
我有一个带有睡眠功能的 while 循环,我不想运行它 -> 更新数据库 -> 睡眠 -> 再次运行 10 次。使用下面的脚本,脚本会循环 10 次,但只有在所有 10 次循环都完成后才会更新数据库。
我在最后添加了一个回显只是为了验证,并且回显不会出现在页面上,直到每个循环都同时回显。
我还尝试将 ob_flush() 和 flush() 放在 echo 之后,但没有成功。
脚本
$loops = 10;
while ($loops > 0)
{
while($row = mysql_fetch_array($result))
{
// Get current User status
$username = $row['username'];
$user_status = $row['user_status'];
$user_updated = date('Y-m-d H:i:s');
// Update database
$update_sql = "UPDATE `database`.`user` SET `user_status` = '$user_status',
`user_updated` = '$agent_updated'
WHERE
`user`.`username` = '$username'";
$update=mysql_query($update_sql);
echo "Loop #".$loops."<br>";
}
flush();
$loops--;
Sleep(5);
}
我也尝试过使用 FOR 循环。
任何建议,将不胜感激。我已经通过搜索,没有找到有类似问题的用户,但我找不到答案。
【问题讨论】:
-
不能一一得到回声。 PHP 所做的是一次输出整个内容,而不是一次输出一部分。因此,您将在屏幕上看到输出之前等待 sleep() 秒数。
-
如果 PHP 只在最后返回输出,您是否建议有一个秒脚本循环调用此页面(每 5 秒调用一次页面)?
-
这是一种方法,但我不知道你的实际目标是什么。做某事总是有不止一种方法,你应该描述你拥有什么和你想要什么,也许你会从其他人那里得到有用的意见:)
-
你确定它会在所有 10 个循环都完成后更新数据库吗?还是您只看到数据库中的最后一次更新?一个 while 在另一个循环内循环是否正确? $result 来自哪里?
-
好问题。每次更新时,数据库中都有一个时间戳,因此我可以在页面循环时监控更新。循环结束时的回声也只在所有循环之后返回 ech。我还尝试使用 FOR 循环,然后使用 WHILE 循环,没有任何变化。
标签: php loops while-loop sleep flush