首页 > 解决方案 > PHP sleep() in Loop,阻塞所有后续调用

问题描述

你好,堆积的溢出者..

我目前在循环中使用 PHP 的sleep()方法时遇到问题。

我希望能够pause()在任何给定时刻执行长批处理脚本。

在我的长批处理脚本中,我将检查位于 memcached 中的标志;如果设置,则激活将尝试“暂停”脚本。

请看下面:

session_write_close(); //Apparent Session Induced Fix that Doesn't Work
do {
    $halted = $this->memcache->get("halted");
    if ($halted) {
        sleep(1);
    }
} while ($halted);

使用上面的代码,我能够成功地“暂停”我的脚本。sleep()除了似乎阻止对服务器的所有后续请求的事实;当在循环中。

我知道sleep()需要阻止当前线程来做它的事情。但我不确定为什么它会阻止所有后续请求。

  1. 有谁知道可能会发生什么?
  2. 是否有任何替代方法可以有效地“暂停”任何 PHP 脚本中途?

标签: phpsleepblocking

解决方案


推荐阅读