PHP睡眠延迟

时间:2013-03-14 16:16:37

标签: php for-loop delayed-execution timedelay

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

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

    //sleep for 3 seconds
}

我该怎么做?

5 个答案:

答案 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)

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

  1. 您的脚本运行缓慢。如果多个用户正在运行该脚本,则会阻塞服务器。
  2. 某些用户的服务器可能会超时。
  3. 硬盘访问是一种昂贵的资源。
  4. 有更好的方法可以做到这一点。
  5. 您可以使用Ajax。并使用超时来每隔几秒调用一次PHP脚本。这将避免加载缓慢的脚本。而且你也可以继续这样做(当前for循环只运行33秒然后停止)。

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

答案 2 :(得分:6)

您可以使用sleep(3)使线程休眠3秒钟。

<{3}}中

更正睡眠方法。

答案 3 :(得分:1)

野兔是两种睡眠PHP脚本的方法。当您拥有代码并希望暂停脚本工作一段时间时,请使用这些功能。 在这些示例中,代码的第一部分将在脚本运行时完成,而代码的第二部分将完成,但会有时间延迟。

  1. 使用sleep()功能,您可以以秒为单位定义睡眠时间。
  2. 示例:

    echo "Message 1";
    // The first part of code.
    $timeInSeconds = 3;
    sleep($timeInSeconds);
    // The second part of code.
    echo "Message 2";
    

    这种方式可以让PHP脚本睡3秒。使用此功能可以使脚本保持整数(整数)秒。

    1. 使用usleep()功能可以定义睡眠时间(以微秒为单位)。这个休眠时间对于需要比一秒钟更精确的时间间隔更方便。
    2. 示例:

      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守护程序脚本。我在需要一直运行的多个任务中使用它。

捕获的是确保每次运行脚本时都要检查内存资源。如果它太高,请停止该过程,然后让它重新启动。

我已成功使用此过程始终检查要处理的任务的数据库记录。

这可能有点矫枉过正,但值得考虑。