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 相关文章推荐
php 移除数组重复元素的一点说明
Nov 27 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
php生成带logo二维码方法小结
Apr 08 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
在laravel中实现事务回滚的方法
Oct 10 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php检测文本的编码
2015/07/26 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
基于jquery的页面划词搜索JS
2010/09/14 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
js的回调函数详解
2015/01/05 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
vue动态改变背景图片demo分享
2018/09/13 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
详解K-means算法在Python中的实现
2017/12/05 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
值传递还是引用传递
2015/02/08 面试题
读书心得体会
2013/12/28 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
新学期决心书
2014/03/11 职场文书
环保倡议书300字
2014/05/15 职场文书
英语教育专业自荐信
2014/05/29 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang