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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
php中日期加减法运算实现代码
Dec 08 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
PHP程序员基本要求和必备技能
May 09 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
PHP异常处理定义与使用方法分析
Jul 25 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
最省空间的计数器
2006/10/09 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
实例解析php的数据类型
2018/10/24 PHP
php写app用的框架整理
2019/09/29 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
python中的字典使用分享
2016/07/31 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
与UNIX有关的几个名词
2015/09/17 面试题
电子邮箱格式怎么写
2014/01/12 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
详解JS数组方法
2021/11/20 Javascript