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+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
php 字符转义 注意事项
May 27 PHP
php摘要生成函数(无乱码)
Feb 04 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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数据库连接
2006/10/09 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
vue实现分页组件
2020/06/16 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
利用Python实现网络测试的脚本分享
2017/05/26 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
mac系统安装Python3初体验
2018/01/02 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
异步传递消息系统的作用
2016/05/01 面试题
正隆泰信息技术有限公司上机题
2012/06/14 面试题
大学生通用个人自我评价
2014/04/27 职场文书
离婚财产处理协议书
2014/09/30 职场文书
欠款证明
2015/06/24 职场文书
七年级作文之冬景
2019/11/07 职场文书