1

我想做以下事情:如果 $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

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

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

4

2 回答 2

1

我看到那个循环:

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

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

对于循环更多 taht 1 需要使用价值$start > 56,因为if($start % 28 == 0)

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

于 2013-09-09T13:53:12.857 回答
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>';
}

如果这些都没有给你正确的想法,那么你将不得不澄清你的意思。

于 2013-09-05T18:19:03.427 回答