php实现定时任务,php如何自动执行定时任务

php实现定时任务,php如何自动执行定时任务,PHP定时执行计划任务的多种方法小结

PHP不支持多线程,有时候处理问题也不是那么爽。今天,我们来谈谈PHP有规律的执行方式。

有三种方法可以定期实现PHP。为windows计划任务;2.为linux编写脚本程序;3.让网页浏览器定期刷新。

具体实现

Windows计划任务

PHP很少在win服务器上运行,具体实现也不再研究。在线实现的原理大概是写一个bat脚本,然后让window task添加并执行这个bat脚本。详情请参考https://www.jb51.net/article/29134.htm.

linux 的脚本实现

这里主要使用crontab命令,

用法:

crontab文件crontab [ -u用户] [ -u用户] { -l | -r | -e }

描述:

Crontab用于允许用户在固定的时间或间隔运行程序。

用crontab写shell脚本,然后让PHP调用shell。这是linux的特点,不应该是PHP自己语言的特点。

参见:https://www.jb51.net/article/29136.htm.

PHP实现定时执行计划任务

用php刷新浏览器有几个问题需要解决。PHP脚本执行时间限制,默认为30m解:set _ time _ limit();或者修改PHP.ini设置max_execution_time时间(不推荐)。如果客户端浏览器关闭,程序可能会被迫终止。解决方案:即使页面关闭,ignore_user_abort也会正常执行。如果程序一直执行,很可能会消耗大量资源。解决方法:使用sleep使用程序休眠一段时间,然后在执行PHP时定时执行代码:复制代码如下:PHP ignore _ user _ abort();//关闭浏览器,PHP脚本也可以继续执行。set _ time _ limit(3000);//程序可以通过set_time_limit(0) $interval=5无限执行;//每5s运行一次

//方法1-无限循环do{ echo test 。时间()。br/;睡眠($间隔);//Wait 5s } while(true);

//方法2 - sleep定期执行require _ once’。/curl class . PHP ;//导入文件

$ curl=new httpurl();//实例化$ stime=$ curl-getmicrotime();for($ I=0;$ i=10$i ){

回声测试。时间()。br/;睡眠($间隔);//等待5s

} ob _ flush();flush();$ etime=$ curl-getmicrotime();echo‘HR’;echo round(($etime-stime),4);//程序执行时间

测试时,发现这个效率不是很高,

总结:个人认为PHP在常规执行任务方面效率不是很高。我建议定期执行任务的工作还是交给壳吧,壳才是王道。Ps:那个无限循环法好像是网站恶意攻击常用的方法。

php实现定时任务,php如何自动执行定时任务