<?php /** * sleep函数的用法 * 琼台博客 */ // 输出当前程序时间戳 echo time(); // out:1338088780 echo '<br />'; // 暂停十秒 sleep(10); // 输出时间戳 echo time(); // out:1338088790
1338088780 1338088790
以上例子,我们只用了一次sleep函数,页面中可以无限制使用sleep()函数。请看以下代码:
<?php /** * sleep函数的用法 * 琼台博客 */ // 输出第一次时间戳 echo time(); // out: 1338088780 echo '<br />'; // 暂停十秒 sleep(10); // 输出第二次时间戳 echo time(); // out: 1338088790 echo '<br />'; // 暂停二十秒钟 sleep(20); // 输出第三次时间戳 echo time(); // out: 1338088810
1338088780 1338088790 1338088810
页面中出现两次sleep,第一次是十秒,第二次二十秒。由此得出以上实例总共执行三十秒。页面中多次出现sleep()函数时为累加而不是覆盖前面的代码。
那如何结合sleep定时执行动态生成时间的代码呢?请看以下代码:
<?php /** * sleep函数定时执行动态生成时间段的代码 * 琼台博客 */ // 目前时间 echo date('Y-m-d H:i:s'); // out:2012-05-27 14:58:00 echo '<br />'; // 动态生成时间 范围在今天下午六点到晚上零点前的任意时间 $datetime = date('Y-m-d').' '.rand('18,23').':'.rand('0,59').':'.rand('0,59'); // 2012-05-27 19:20:00 // 算得时间戳 $a = strtotime($datetime); // 算得时间差 $reduce = $a-time(); // sleep等待 sleep($reduce); // 执行到时间后执行的代码块 echo date('Y-m-d H:i:s'); // out:2012-05-27 19:20:00
2012-05-27 14:58:00 2012-05-27 19:20:00
最后,可能某些童鞋做实例的时候会说怎么我的程序执行出错,提示超时。出现这个问题不要慌,这是PHP默认页面执行时间导致的,在PHP中默认执行页面时间是三十秒钟,这对于一般程序够用了。但如果你要做类似定时执行功能就必须再头部声明设置下执行时间set_time_limit(0)。0是代表不限时,单位是秒。最后整体贴出代码:
<?php /** * sleep函数定时执行动态生成时间段的代码 * 琼台博客 */ // 设置页面执行时间,否则会有超时错误提示 set_time_limit(0); // 目前时间 echo date('Y-m-d H:i:s'); // out:2012-05-27 14:58:00 // 动态生成时间 范围在今天下午六点到晚上零点前的任意时间 $datetime = date('Y-m-d').' '.rand('18,23').':'.rand('0,59').':'.rand('0,59'); // 2012-05-27 19:20:00 // 算得时间戳 $a = strtotime($datetime); // 算得时间差 $reduce = $a-time(); // sleep等待 sleep($reduce); // 执行到时间后执行的代码块 echo date('Y-m-d H:i:s'); // out:2012-05-27 19:20:00