PHP 睡眠延迟

2022-08-30 13:51:51

在PHP中,我想在循环的每次迭代上放置一些秒的延迟。

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

    //sleep for 3 seconds
}

我该怎么做?


答案 1

使用功能。http://php.net/manual/en/function.sleep.php这将在给定的秒数内停止执行下一个循环。所以像这样的东西PHP sleep()

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
}

答案 2

我看到你在做什么...您延迟脚本不断检查文件系统上的文件(我正在上传或由我假设的另一个脚本编写的文件)。这是一个不好的方法。

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

你可以使用Ajax。并使用超时每隔几秒钟调用一次 PHP 脚本。这将避免脚本加载缓慢。而且你也可以不断地这样做(电流的循环只会运行33秒,然后停止)。

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


推荐