`
mmdev
  • 浏览: 12914448 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

php定时计划任务实现方法

 
阅读更多

php定时计划任务实现方法
我在uchome 中 分析到, uchome是这样做的
1. 把所有的计划任务存放到数据库
2. 每次用户进行操作或打开页面的时候都按排序执行一条计划任务. 也就是轮番判断,时间到了的, 就在用户进程中执行.
uchome的计划任务代码在 ./source/function_cron.php
上面只自己分析uchome代码关于计划任务大概的结果, 抛砖引玉. 希望谁有好的方法拿出来共享.
ignore_user_abort()
我前一段时间彻底研究过计划任务,认为计划任务的思路很多,但最适合Web的还是触发式的,就是类似于DZ和PHPWind的,似乎大多数web应用也都是这么做的,再说几种其他的供参考
1,为了提供稳定的触发,用crontab+wget或者ab提供定时访问
2,nohup + php写守护程序
3,直接用php写个死循环还提供触发,这时需要用缓存或者数据库来协助推出循环,还有必须用sleep或者usleep控制触发频率
4,crontab+php
5,web触发方式,这也有区别,一种是定时触发,一种是定周期触发,DZ和PHPWind都是定时触发,我最后采用的是定周期触发
具体的实现思路 很容易想,就不多说了
自己有主机肯定用crontab来执行命令行PHP
没有只能写在代码中了
用crontab会比较好, 如果用循环的话, 最好也要把循环和具体处理程序分开, 不然内存会一直增加.

今天一不小心在php手册上发现了这个函数-ignore_user_abort,这个函数可以帮助我们实现像linux中的cron一样实现计划任务,下面一起来看下该如何来实现。
首先看下php手册对这个函数的解释
Description

int ignore_user_abort ([ bool $setting ] )
Sets whether a client disconnect should cause a script to be aborted.

也就是说无论客户端是否关闭浏览器,下面的程序都会执行.
再看下其参数
Parameters

setting
If not set, the function will only return the current setting.

这个函数接受一个参数,来决定是否启用ignore_user_abort的功能。
再看其返回值:

Return Values
Returns the previous setting, as a boolean.

这里说返回前一次的设置,并且是bool值得,经过我的测试,这个说法是不对的,返回的明明是int型的,不相信的话大家可以写一个php文件来测试下。
说了这么多了,到底该如何用php的这个函数实现计划任务呢?还跌借助另外一个函数,这个函数是set_time_limit,通过set_time_limit0)可以设置程序的运行时间为无限制,php默认的运行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去。在程序执行之前加上ignore_user_abort(1)和set_time_limit(0)即可以了,最终程序该如何写呢?给大家一个例子。

1. <?php

2. ignore_user_abort(); // run script in background

3. set_time_limit(0); // run script forever

4. $interval=30; // do every 15 minutes…

5. do{

6. $fp = fopen(‘text3.txt’,'a’);

7. fwrite($fp,’test’);

8. fclose($fp);

9. sleep($interval); // wait 15 minutes

10. }while(true);

11. ?>


分享到:
评论

相关推荐

    taskPHP基于php开发的定时计划任务框架,多进程实现任务的分配和运行

    taskPHP基于php开发的定时计划任务框架,多进程实现任务的分配和运行,支持多进程和多线程模式需要安装pthreads扩展(可选),支持linux和windows。

    PHP定时任务删除文件方法

    利用这个特性,我们可以实现非常牛的功能,也就是通过它来实现定时任务的激活,激活之后就随便它自己怎么办了,实际上就有点类似于后台任务。 而sleep(n)则是指当程序执行到这里时,暂时不往下执行,而是休息n秒钟...

    ThinkPHP实现定时执行任务DEMO

    ThinkPHP实现定时执行任务的两种方法

    PHP计划任务、定时执行任务的实现代码

    不知道能程序的性能会不会影响很大! 复制代码 代码如下: ignore_user_abort();... 您可能感兴趣的文章:php定时计划任务的实现方法详解php中定时计划任务的实现原理PHP定时执行计划任务的多种方法小结PHP定时执行

    taskPHP--基于php开发的定时计划任务框架.zip

    taskPHP基于php开发的定时计划任务框架,利用多进程实现任务的分配和运行,利用内存共享实现进程间通信,支持多线程模式需要安装pthreads扩展(可选),支持linux和windows。有较好的伸缩性、扩展性、健壮稳定性而被多家...

    php定时计划任务的实现方法详解

    希望谁有好的方法拿出来共享.ignore_user_abort()我前一段时间彻底研究过计划任务,认为计划任务的思路很多,但最适合Web的还是触发式的,就是类似于DZ和PHPWind的,似乎大多数web应用也都是这么做的,再说几种其他...

    一个纯PHP实现的多进程,定时任务管理工具,兼容部分crontab语法, 支持守护进程

    cronManager是一个纯PHP实现的定时任务管理工具,api简单清晰,采用的是多进程模型,进程通信采用的是消息队列,任务监控也提供了简单的命令,方便易用

    PHP定时执行任务实现方法详解(Timer)

    下面通过理论讲解,实例分析,效果展示的方式给大家分享下PHP定时执行任务实现方法。 定时器任务,在WEB应用比较常见,如何使用PHP实现定时器任务,大致有两种方案: 1)使用Crontab命令,写一个shell脚本,在脚本中...

    taskPHP基于原生态php开发的定时计划任务框架

    taskPHP基于原生态php开发的定时计划任务框架,利用多进程实现任务的分配和运行,利用原生态php内存共享实现进程间通信,支持linux和windows。有较好的伸缩性、扩展性、健壮稳定性而被多家公司使用

    PHP定时执行任务的3种方法详解

    PHP定时执行的三种方式实现 1、windows 的计划任务 2、linux的脚本程序 3、让web浏览器定时刷新 具体实现 1、windows计划任务 PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,...

    PHP实现定时执行任务的方法

    主要介绍了PHP实现定时执行任务的方法,涉及到ignore_user_abort函数忽略脚本终止的使用及sleep函数延缓执行等的应用,需要的朋友可以参考下

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

    如果非要PHP去实现定时任务, 可以有以下几种解决方案: 一. 简单直接不顾后果型 &lt;?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序...

    python定时任务 每天运行一次.md

    在 Python 中可以使用 schedule 模块来实现定时任务。以下是一个每天运行一次的例子: import schedule import time def job(): print("I'm running at 5:00am every day.") # 设定定时任务 schedule.every()....

    windows下使用PHP实现定时执行脚本

    一直以来,使用PHP定时运行脚本都是让大家头痛的问题,但是我们确实可以利用windows的计划任务来定时调用PHP脚本,当然这还要感谢PHP.exe。下面,站长将向大家介绍,如何来实现。 目标:根据系统时间定时执行PHP...

    PHP定时执行计划任务的多种方法小结

    PHP定时执行的三种方式实现 1、windows 的计划任务 2、linux的脚本程序 3、让web浏览器定时刷新 具体实现 windows计划任务 PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让...

    php使用Swoole实现毫秒级定时任务的方法

    主要介绍了php使用Swoole实现毫秒级定时任务的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    php简单定时执行任务的实现方法

    主要介绍了php简单定时执行任务的实现方法,涉及curl及sleep等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics