我正试图找出如何暂停php中的循环,使其每5分钟执行一次,例如
while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
//send email to a member
// pause for a minute then continue the loop
}
的简单示例
for($x=0;$x<=4;$x++){
echo $x."<br>";
sleep(5);
// the loop will be delayed for 25 seconds then it'll print 5 lines at once
}
这个脚本可以按您的期望工作。循环的每次迭代都会延迟5秒。但是,您看到的是发送到浏览器的输出,它在特定时间(通常是脚本执行完成时)由PHP缓冲和传递。
您可以尝试使用ob_get_contents()
来检索每次迭代的输出缓冲区。
PHP手册:ob_get_contents()
请注意,使用这种方法,您很可能会超过max_execution_time
。一份cron工作绝对是前进的方向。或者,您可以保持浏览器打开状态,并强制每5分钟刷新一次(不实用)。