我想执行以下操作:如果 $ 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
所以我可以看到脚本无法正常工作......
你能告诉我为什么剧本不能正常工作吗?
答案 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>';
}
如果这些都没有给你正确的想法,那么你必须澄清你到底意味着什么。