因思维新建站官网:jz.in
文|何掌柜
相信现在很多项目上都会有定时的任务执行计划吧,不说别的,就比如定时发送文章,定时上架促销产品等等。
在程序上这样的方式能节约人力成本,在人力不好去操作的时间让机器来自动完成,并且非常的精确和高效。
如果我们想让我们制作的php函数去自动执行,那么就需要解决几个问题。
1、PHP脚本执行时间的限制:这里的限制时间默认是30m,但这肯定是不能够满足我们的需求的,解决办法就是用set_time_limit(0)函数让程序无限制的执行下去。
2、如果客户端浏览器关闭了呢,这样程序不久被迫终止了么,解决办法还是有的,用ignore_user_abort函数,即使页面关闭了已让能够继续执行。
3、当然了,无限制的持续执行肯定会耗费非常多的服务器资源,这是一种可耻的浪费,那么就用sleep()函数来让程序休眠一段时间在执行,这样就好了很多。
我们来看下具体的代码吧:
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=5;// 每隔5s运行
//方法1--死循环
do{
echo '测试'.time().'
';
sleep($interval);// 等待5s
}while(true);
//方法2---sleep 定时执行
require_once '.;;//引入文件
$curl = new httpCurl();//实例化
$stime = $curl->getmicrotime();
for($i=0;$i<=10;$i++)
{
echo '测试'.time().'
';
sleep($interval);// 等待5s
}
ob_flush();
flush();
$etime = $curl->getmicrotime();
echo '
';
echo round(($etime-stime),4);//程序执行时间
非常简单实用的方法,相信大伙都能看明白吧,不过这里要说下,这种方式的效率并不高,如果只是想定时处理一些很简单的数据,那么用这种方式是不错的,但是如果是非常大的数据处理量并且非常频繁,那么建议使用shell来完成。