在某些程序中,有一些特殊的功能需要用到定时执行,如果熟悉Linux的朋友肯定会说这不是容易吗,直接来个计划任务crontab不久实现了吗?这的确是可以实现,但必须是提前知道具体的执行时间,然后才能写到计划任务里去。比如凌晨两点,上午七点,或者每天上午六点三十分等等。
然而有时候,这个时间我们无法预知,而执行时间是程序动态生成的。然后在动态生成的时间后执行某些程序片段,这里就不能用Linux的crontab计划任务了,因为每次执行的时间都是动态生成,而计划任务需要知道一个定死了的时间。既然无法使用计划任务,那么就只能从程序本身寻找实现方法。
在PHP中,有一个sleep函数,大概意思是程序执行遇到sleep函数时暂停N秒后继续往下执行。如sleep(10)意思就是程序自上往下执行,遇到sleep(10)语句后暂停十秒,然后继续往下执行。函数括号内的参数是一个数值,代表暂停时间值,单位秒。请看下面一段代码
<?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
本文向大家介绍PHP中利用sleep函数实现定时执行功能实现代码,包括了PHP中利用sleep函数实现定时执行功能实现代码的使用技巧和注意事项,需要的朋友参考一下 在一些竞猜的网站中,如果我们需要做一个定时执行的功能,比如有一道题,在十秒之内要完成,否则显示“您已超时”,如果完成,则跳转到下一道题上面,而这中间有一个十秒的停顿,这样的功能是怎样实现的呢? 在PHP中,有一个sleep函数,大概意思
本文向大家介绍python中sleep函数用法实例分析,包括了python中sleep函数用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python中sleep函数用法。分享给大家供大家参考。具体如下: Python中的sleep用来暂停线程执行,单位为秒 希望本文所述对大家的Python程序设计有所帮助。
本文向大家介绍node.js中使用node-schedule实现定时任务实例,包括了node.js中使用node-schedule实现定时任务实例的使用技巧和注意事项,需要的朋友参考一下 有的时候需要根据业务需要,晚上凌晨以后执行某些操作的时候,这个可能会有所帮助,我最近正在研究这个,欢迎共同探讨。 github地址:https://github.com/mattpat/node-schedule
本文向大家介绍PHP实现的oracle分页函数实例,包括了PHP实现的oracle分页函数实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现的oracle分页函数。分享给大家供大家参考,具体如下: mysql有limit,分页的时候,我们可以用limit 30,40,而oracle没有limit,用其他的方法来代替--rownum. 一、底层方法 主要二个方法我写一点注释 二、
本文向大家介绍AspNet Core上实现web定时任务实例,包括了AspNet Core上实现web定时任务实例的使用技巧和注意事项,需要的朋友参考一下 作为一枚后端程序狗,项目实践常遇到定时任务的工作,最容易想到的的思路就是利用Windows计划任务/wndows service程序/Crontab程序等主机方法在主机上部署定时任务程序/脚本。 但是很多时候,若使用的是共享主机或者受控主机,这
本文向大家介绍php 使用array函数实现分页,包括了php 使用array函数实现分页的使用技巧和注意事项,需要的朋友参考一下 代码很简单,就不多废话了。 以上就是使用array函数实现分页的核心代码了,希望大家能够喜欢。