在PHP中,我想在循环的每次迭代中放置一些第二个延迟。
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
//sleep for 3 seconds
}
我该怎么做?
答案 0 :(得分:50)
使用PHP sleep()
功能。 http://php.net/manual/en/function.sleep.php
这将停止执行下一个循环达到给定的秒数。像这样的东西
for ($i=0; $i <= 10; $i++) {
$file_exists=file_exists($location.$filename);
if($file_exists) {
break;
}
sleep(3); // this should halt for 3 seconds for every loop
}
答案 1 :(得分:13)
我看到你正在做什么...你推迟了一个脚本来不断检查文件系统上的文件(一个正在上传或由我假设的另一个脚本编写的文件)。这是一个很糟糕的方法。
您可以使用Ajax。并使用超时来每隔几秒调用一次PHP脚本。这将避免加载缓慢的脚本。而且你也可以继续这样做(当前for循环只运行33秒然后停止)。
您可以使用数据库。在某些情况下,数据库访问比HDD访问更快。特别是有视图和缓存。创建文件/上传文件的脚本可以在表中设置一个标志(即file_exists),然后你可以有一个脚本来检查数据库中的那个字段。
答案 2 :(得分:6)
您可以使用sleep(3)
使线程休眠3秒钟。
更正睡眠方法。
答案 3 :(得分:1)
野兔是两种睡眠PHP脚本的方法。当您拥有代码并希望暂停脚本工作一段时间时,请使用这些功能。 在这些示例中,代码的第一部分将在脚本运行时完成,而代码的第二部分将完成,但会有时间延迟。
示例:
echo "Message 1";
// The first part of code.
$timeInSeconds = 3;
sleep($timeInSeconds);
// The second part of code.
echo "Message 2";
这种方式可以让PHP脚本睡3秒。使用此功能可以使脚本保持整数(整数)秒。
示例:
echo "Message 1";
// The first part of code.
$timeInMicroSeconds = 2487147;
usleep($timeInMicroSeconds);
// The second part of code.
echo "Message 2";
如果你想让php的时间值小于秒(浮点数),你可以使用这个函数。在这个例子中,我已经让脚本睡眠了2.487147秒。
答案 4 :(得分:0)
您是否考虑过使用supervisorD使用PHP守护程序脚本。我在需要一直运行的多个任务中使用它。
捕获的是确保每次运行脚本时都要检查内存资源。如果它太高,请停止该过程,然后让它重新启动。
我已成功使用此过程始终检查要处理的任务的数据库记录。
这可能有点矫枉过正,但值得考虑。