PHP定时执行计划任务的多种方法小结


Posted in PHP onDecember 19, 2011

PHP定时执行的三种方式实现
1、windows 的计划任务
2、linux的脚本程序
3、让web浏览器定时刷新

具体实现

windows计划任务

PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本,具体可以参考:https://3water.com/article/29134.htm

linux 的脚本实现
这里主要使用到crontab这个命令,

使用方式 :

crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程式之用

使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性

可以参看:https://3water.com/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 '测试'.time().'<br/>'; 
sleep($interval);// 等待5s 
}while(true); 
//方法2---sleep 定时执行 
require_once './curlClass.php';//引入文件 
$curl = new httpCurl();//实例化 
$stime = $curl->getmicrotime(); 
for($i=0;$i<=10;$i++){ 
echo '测试'.time().'<br/>'; 
sleep($interval);// 等待5s 
} 
ob_flush(); 
flush(); 
$etime = $curl->getmicrotime(); 
echo '<hr>'; 
echo round(($etime-stime),4);//程序执行时间

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

PHP定时执行计划任务的多种方法小结 
总结:
个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧,比较那才是王道。
ps:那个死循环的方法好像是恶意攻击网站经常使用的方法

PHP 相关文章推荐
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
利用PHP实现短域名互转
Jul 05 PHP
php多文件上传实现代码
Feb 20 PHP
Drupal7连接多个数据库及常见问题解决
Mar 02 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
Mar 14 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 #PHP
php安全配置 如何配置使其更安全
Dec 16 #PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 #PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 #PHP
通达OA公共代码 php常用检测函数
Dec 14 #PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 #PHP
php中日期加减法运算实现代码
Dec 08 #PHP
You might like
PHP Curl多线程原理实例详解
2013/11/06 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
JavaScript模块详解
2017/12/18 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Python的math模块中的常用数学函数整理
2016/02/04 Python
对python中的argv和argc使用详解
2018/12/15 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python enumerate内置库用法解析
2020/02/24 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
STP的判定过程
2012/10/01 面试题
总结表彰大会主持词
2014/03/26 职场文书
建筑安全标语
2014/06/07 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
个人先进事迹总结
2015/02/26 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android