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:那个无限循环法好像是网站恶意攻击常用的方法。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。