这篇文章主要为大家详细介绍了PHP使用sleep函数实现定时任务的功能实例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!
在某些程序中,有一些特殊的功能需要用到定时执行,如果熟悉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
PHP中使用sleep函数实现定时任务实例分享
以上程序执行结果是
代码如下:
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
PHP中使用sleep函数实现定时任务实例分享
以上程序执行结果是
代码如下:
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
PHP中使用sleep函数实现定时任务实例分享
以上代码输出:
代码如下:
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函数实现定时任务实例分享
本文来自:http://www.q1010.com/173/17533-0.html
注:关于PHP使用sleep函数实现定时任务的功能实例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:sleep
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。