如果满足条件,则命令睡眠暂停20秒

时间:2013-09-05 10:58:54

标签: php sleep

我想执行以下操作:如果 $ start 是28的倍数,脚本将暂停20秒,然后继续工作。

为此,我写道:

set_time_limit(0);
ini_set('display_errors', 1);
error_reporting(E_ALL);
date_default_timezone_set("Europe/Moscow"); 
$start = 0;
$end = 2000;

for($start = 0; $start < 20; $start++){
if($start % 28 == 0){sleep(20);echo 'sleep ';}
echo date('H:i:s').'<br>';
}

当我使用它时,我得到:

sleep 14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01
14:51:01

所以我可以看到脚本无法正常工作......

你能告诉我为什么剧本不能正常工作吗?

2 个答案:

答案 0 :(得分:1)

我看到那个循环:

for($start = 0; $start < 20; $start++){
if($start % 28 == 0){sleep(20);echo 'sleep ';}
echo date('H:i:s').'<br>';

循环20中的最后一个值元素 $ start

for循环更多taht 1需要使用值 $ start &gt; 56,考虑if($start % 28 == 0)

例如 - 28*2 //for 2 loop.

答案 1 :(得分:0)

从技术上讲,0是28的倍数,你的程序确实可以正常工作,所以我猜这根本不是你想要的。我可以想象两种方式,也许在代码中我们更好地相互理解:

// 1. Sleep after every 28 times outputting current date:
for($i = $start; $i < $end; $i++) {
    echo date('H:i:s').'<br>';
    if($i % 28 == 27) {
        echo 'sleeping...<br>';
        sleep(20);
    }
}

// 2. Sleep before every 28th time outputting the current date, except the first time:
for($i = $start; $i < $end; $i++) {
    if($i != 0) && (($i % 28) == 0)) {
        echo 'sleeping...<br>';
        sleep(20);
    }
    echo date('H:i:s').'<br>';
}

如果这些都没有给你正确的想法,那么你必须澄清你到底意味着什么。