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 相关文章推荐
改变Apache端口等配置修改方法
Jun 05 PHP
php中的数组操作函数整理
Aug 18 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
php 获取全局变量的代码
Apr 21 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php获取本机真实IP地址实例代码
Mar 31 PHP
PHP中trait使用方法详细介绍
May 21 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
accesskey 提交
2006/06/26 Javascript
List the UTC Time on a Computer
2007/06/11 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
js实现二级导航功能
2017/03/03 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
初中英语教学反思
2014/01/25 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
朋友聚会开场白
2015/06/01 职场文书
爱国影片观后感
2015/06/18 职场文书