原址: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 实现定时任务的几种方法相关推荐

  1. php实现定时任务的两种方法

    php实现定时任务的两种方法 1.利用宝塔面板简单设置定时任务 2.在Crontab中使用URL执行脚本 1.利用宝塔面板简单设置定时任务 1,在对应的服务器上安装宝塔. 2,打开宝塔设置计划任务. ...

  2. java se 定时任务_Java实现定时任务的三种方法

    一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...

  3. php任务分配思路_PHP执行定时任务的几种方法思路

    PHP本身是没有定时功能的,PHP也不能多线程.PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害.本文,我们就来深入的解析几种常见的php定 ...

  4. 详解PHP实现定时任务的五种方法

    定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用PHP动态语言开发的,而对于PHP的实现决定了它没有Java和.Net这种AppSer ...

  5. PHP实现定时任务的几种方法

    一.定时发送任务解析 在进行手机APP或者微信开发的时候,经常会有需要定时推送消息的场景. 定时发送又分为两种: 一种是在开发的时候固定时间,后台管理人员只能选择将要推送的消息: 另一种是后台管理人员 ...

  6. Java中实现定时任务的3种方法!

    今天我们不用任何框架,用最朴素的 Java API 来实现定时任务,本文会介绍 3 种实现方案,我们一起来看... 1. sleep 这也是我们最常用的 sleep 休眠大法,不只是当作休眠用,我们还 ...

  7. PHP 实现定时任务的几种方法

    [转]http://www.phpchina.com/portal.php?mod=view&aid=40092 这几天需要用PHP写一个定时抓取网页的服务器应用. 在网上搜了一下解决办法, ...

  8. [转]Java实现定时任务的三种方法

    一.使用Thread+sleep的方式 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可 ...

  9. 不用任何框架,Java 就能实现定时任务的 3 种方法

    是的,不用任何框架,用我们朴素的 Java 编程语言就能实现定时任务. 今天,栈长就介绍 3 种实现方法,教你如何使用 JDK 实现定时任务! 1. sleep 这也是我们最常用的 sleep 休眠大 ...

  10. java实现自动任务_Java实现定时任务的三种方法

    普通thread 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: public class Tas ...

最新文章

  1. jieba中文分词源码分析(四)
  2. 独家 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)
  3. 分布式缓存服务器设计原理
  4. LVS技术浅析-proc参数
  5. 阿里云存储_OSS对象存储
  6. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)
  7. 在C ++中检查一个数组是否是另一个数组的子数组
  8. Oracle数据库SqlLoad常用技巧总结word版
  9. 20190226work
  10. Linux 环境 简单启动 Java程序
  11. 解决Rocketdock在win7上重启后不能保存设置和图标的问题
  12. Hbase 的Java API 操作
  13. 2022年华数杯数学建模
  14. cl.exe nmake.exe
  15. delphi 7无法运行提示 Borland license information was found, but it is not valid for Delphi
  16. 微软的野心:Windows 8是战略级的乾坤一击
  17. Android手机投屏初探
  18. 盛大创新院创新模式梳理
  19. 任务调度Schedulerx2.0分布式计算之MapReduce模型
  20. 彻底理解thunk函数与co框架

热门文章

  1. Android 端读取图片exif信息,并对其进行修改
  2. Qt QWindowsBackingStore::flush: GetDC failed (句柄无效)
  3. Linux重要命令-whoami
  4. 基于轻量级目标检测模型实现手写汉字检测识别计数
  5. Vertebra:EngineYard的下一代云计算平台
  6. Pixhawk开发手册
  7. 程序员如何护眼和避免头痛
  8. 主板h110能装linux吗_H110冒充H310 老主板居然也能上八代酷睿
  9. ArcGIS常用工具:union、merge、append、dissolve区别
  10. 计算机网络残值率,电脑固定资产折旧年限是多少