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通用检测函数集合
Feb 08 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
php中stream(流)的用法
Mar 25 PHP
yii实现级联下拉菜单的方法
Jul 31 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
PHP数组相关函数汇总
Mar 24 PHP
php获取文件后缀的9种方法
Mar 22 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
在laravel中实现事务回滚的方法
Oct 10 PHP
tp5修改(实现即点即改)
Oct 18 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 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提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
两种php实现图片上传的方法
2016/01/22 PHP
php强制下载文件函数
2016/08/24 PHP
JavaScript 学习笔记(四)
2009/12/31 Javascript
JavaScript 学习笔记(九)call和apply方法
2010/01/11 Javascript
JS编程小常识很有用
2012/11/26 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
详解javascript函数的参数
2015/11/10 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
Angular4 ElementRef的应用
2018/02/26 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
在Python程序中实现分布式进程的教程
2015/04/28 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
Python如何给你的程序做性能测试
2020/07/29 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
酒店前台接待岗位职责
2013/12/03 职场文书
产品促销活动策划书
2014/01/15 职场文书
销售人员获奖感言
2014/02/05 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技