命令睡眠暂停20秒,如果条件得到满足(Command sleep to pause for 20 s

2019-10-18 14:58发布

我要做到以下几点:如果$开始是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

所以,我可以看到脚本不正确的工作...

能否请你告诉我,为什么脚本不正确的工作?

Answer 1:

我看到的循环:

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

而在去年价值元素$环路20 开始

for循环更taht 1需要使用值$开始 > 56,becose if($start % 28 == 0)

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



Answer 2:

从技术上讲,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>';
}

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



文章来源: Command sleep to pause for 20 seconds if condition is met
标签: php sleep