PHP睡眠延迟

Yea*_*eak 28 php for-loop timedelay delayed-execution

在PHP中,我想在循环的每次迭代中放置一些第二延迟.

for ($i=0; $i <= 10; $i++) {
    $file_exists=file_exists($location.$filename);
    if($file_exists) {
        break;
    }

    //sleep for 3 seconds
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

mav*_*ili 52

使用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
}
Run Code Online (Sandbox Code Playgroud)


Hus*_*man 13

我看到你在做什么......你推迟了一个脚本来不断检查文件系统上的文件(一个正在上传或由我假设的另一个脚本编写的文件).这是一个很糟糕的方法.

  1. 你的脚本运行缓慢.如果多个用户正在运行该脚本,则会阻塞服务器.
  2. 某些用户的服务器可能会超时.
  3. HDD访问是一种昂贵的资源.
  4. 有更好的方法来做到这一点.

你可以使用Ajax.并使用超时来每隔几秒调用一次PHP脚本.这将避免加载缓慢的脚本.而且你也可以继续这样做(当前for循环只运行33秒然后停止).

您可以使用数据库.在某些情况下,数据库访问比HDD访问更快.特别是有视图和缓存.创建文件/上传文件的脚本可以在表中设置一个标志(即file_exists),然后您可以使用一个脚本来检查数据库中的该字段.


dev*_*ooh 6

你可以用sleep(3)它来休眠3秒钟.

php中的校正睡眠方法只需几秒钟.

  • 它是"睡觉(3)",而不是睡眠(3000). (3认同)
  • "睡觉(3000)"将睡一个小时! (2认同)