PHP 实现定时任务的几种方法
原址:http://firstleaf.diandian.com/post/2013-04-01/40048474547
一. 简单直接不顾后果型
1
2
3
4
5
6
7
|
ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0); // 通过set_time_limit(0)可以让程序无限制的执行下去
$interval =60*30; // 每隔半小时运行
do {
//ToDo
sleep( $interval ); // 等待5分钟
} while (true);
|
缺点: 启动之后,便无法控制, 除非终止 PHP 宿主. 不要采用这样方法, 除非你是黑客.
二. 简单可控型
config.php
1
2
3
|
<?php
return 1;
?>
|
cron.php
1
2
3
4
5
6
7
8
9
|
ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0); // 通过set_time_limit(0)可以让程序无限制的执行下去
$interval =60*30; // 每隔半小时运行
do {
$run = include 'config.php' ;
if (! $run ) die ( 'process abort' );
//ToDo
sleep( $interval ); // 等待5分钟
} while (true);
|
通过 改变config.php 的 return 0 , 来实现停止程序. 一个可行的办法是config.php文件和某个特殊表单交互, 通过HTML页面设置一些变量来进行配置
缺点: 占系统资源, 长时间运行,会有一些意想不到的隐患。比如内存管理方面的问题 .
三. 简单改进型
1
2
3
4
5
6
7
8
9
|
<?php
$time =15;
$url = "http://" . $_SERVER [ 'HTTP_HOST' ]. $_SERVER [ 'REQUEST_URI' ];
/*
function
*/
sleep( $time );
file_get_contents ( $url );
?>
|
php脚本sleep 一段时间之后通过访问自身的方式继续执行. 就好像接力赛跑一样..这样就能保证每个PHP脚本执行时间不会太长. 也就不受time_out的限制了.
因为每一次一次循环php文件都是独立执行,所以这种方法,避免了time_out的限制. 但是最好和上边一样 加上控制代码. cofig.php , 以便能够终止进程.
四. cronTab 型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
cControlJobNum(1);
while (true)
{
<your code>
<动态sleep>
}
function cControlJobNum( $job_limit ) {
$cmd = @popen( "ps -ef | grep '{$_SERVER['SCRIPT_FILENAME']}' | grep -v grep | wc -l" , 'r' );
$num = @ fread ( $cmd , 512);
$num += 0;
@pclose( $cmd );
if ( $num > $job_limit )
{
exit ;
}
return true;
}
|
程序中通过 popen 来判断运行进程的数量,来控制并发
五.采用 BAE或者SAE上的 cron 服务来做.
六.买个vps,用crontab
PHP 实现定时任务的几种方法相关推荐
- php实现定时任务的两种方法
php实现定时任务的两种方法 1.利用宝塔面板简单设置定时任务 2.在Crontab中使用URL执行脚本 1.利用宝塔面板简单设置定时任务 1,在对应的服务器上安装宝塔. 2,打开宝塔设置计划任务. ...
- java se 定时任务_Java实现定时任务的三种方法
一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...
- php任务分配思路_PHP执行定时任务的几种方法思路
PHP本身是没有定时功能的,PHP也不能多线程.PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害.本文,我们就来深入的解析几种常见的php定 ...
- 详解PHP实现定时任务的五种方法
定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用PHP动态语言开发的,而对于PHP的实现决定了它没有Java和.Net这种AppSer ...
- PHP实现定时任务的几种方法
一.定时发送任务解析 在进行手机APP或者微信开发的时候,经常会有需要定时推送消息的场景. 定时发送又分为两种: 一种是在开发的时候固定时间,后台管理人员只能选择将要推送的消息: 另一种是后台管理人员 ...
- Java中实现定时任务的3种方法!
今天我们不用任何框架,用最朴素的 Java API 来实现定时任务,本文会介绍 3 种实现方案,我们一起来看... 1. sleep 这也是我们最常用的 sleep 休眠大法,不只是当作休眠用,我们还 ...
- PHP 实现定时任务的几种方法
[转]http://www.phpchina.com/portal.php?mod=view&aid=40092 这几天需要用PHP写一个定时抓取网页的服务器应用. 在网上搜了一下解决办法, ...
- [转]Java实现定时任务的三种方法
一.使用Thread+sleep的方式 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可 ...
- 不用任何框架,Java 就能实现定时任务的 3 种方法
是的,不用任何框架,用我们朴素的 Java 编程语言就能实现定时任务. 今天,栈长就介绍 3 种实现方法,教你如何使用 JDK 实现定时任务! 1. sleep 这也是我们最常用的 sleep 休眠大 ...
- java实现自动任务_Java实现定时任务的三种方法
普通thread 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: public class Tas ...
最新文章
- jieba中文分词源码分析(四)
- 独家 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)
- 分布式缓存服务器设计原理
- LVS技术浅析-proc参数
- 阿里云存储_OSS对象存储
- Codeforces Round #701 (Div. 2)赛后补题报告(A~D)
- 在C ++中检查一个数组是否是另一个数组的子数组
- Oracle数据库SqlLoad常用技巧总结word版
- 20190226work
- Linux 环境 简单启动 Java程序
- 解决Rocketdock在win7上重启后不能保存设置和图标的问题
- Hbase 的Java API 操作
- 2022年华数杯数学建模
- cl.exe nmake.exe
- delphi 7无法运行提示 Borland license information was found, but it is not valid for Delphi
- 微软的野心:Windows 8是战略级的乾坤一击
- Android手机投屏初探
- 盛大创新院创新模式梳理
- 任务调度Schedulerx2.0分布式计算之MapReduce模型
- 彻底理解thunk函数与co框架
热门文章
- Android 端读取图片exif信息,并对其进行修改
- Qt QWindowsBackingStore::flush: GetDC failed (句柄无效)
- Linux重要命令-whoami
- 基于轻量级目标检测模型实现手写汉字检测识别计数
- Vertebra:EngineYard的下一代云计算平台
- Pixhawk开发手册
- 程序员如何护眼和避免头痛
- 主板h110能装linux吗_H110冒充H310 老主板居然也能上八代酷睿
- ArcGIS常用工具:union、merge、append、dissolve区别
- 计算机网络残值率,电脑固定资产折旧年限是多少