ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

[转]详解PHP设置定时任务的实现方法(1/2)

来源:网络整理     时间:2015-12-24     关键词:

本篇文章主要介绍了"[转]详解PHP设置定时任务的实现方法",主要涉及到方面的内容,对于PHPjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 文章转载自:问说网 ? 详解PHP设置定时任务的实现方法地址:http://www.uedsc.com/php-timing-task.html定时运行任务对于...

文章转载自:问说网 ? 详解PHP设置定时任务的实现方法
地址:http://www.uedsc.com/php-timing-task.html

定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用PHP动态语言开发的,而对于PHP的实现决定了它没有Java和.Net这种AppServer的概念,而http协议是一个无状态的协议,PHP只能被用户触发,被调用,调用后会自动退出内存,没有常驻内存。

如果非要PHP去设置定时任务, 可以有以下三个方法:

1、用户触发定时

通过挂载到网页里面,判断当前的时间,然后运行PHP代码,缺点是每一次加载网页,都需要加载这个PHP页面,而对于人气不旺的网站,这样的延时可能会更加的严重,毕竟是用户的HTTP请求去触发这个PHP代码的运行,Discuz!论坛程序是判断在00:00之后,第一个用户访问请求去执行定时的PHP代码。

2、常驻内存运行

PHP是可以常驻内存运行程序的,下面的这段代码,可以在当前文件夹下,生成一个test.txt,并每隔20秒,往里面写入一个时间戳,无论客户端是否关闭浏览器。


关键的两个函数

ignore_user_abort(true),这个函数的作用是,无论客户端是否关闭浏览器,下面的代码都将得到执行。

set_time_limit(0),这个函数的作用是,取消PHP文件的执行时间,如果没有这个函数的话,默认PHP的执行时间是30秒,也就是说30秒后,这个文件就会从内存中删除。

另外usleep函数是在PHP5.0后的版本中加入的函数,支持Windows操作系统,设置代码运行的时间,单位是毫秒(MS)。

如何停止定时

但是当我执行脚本的时候,即使我关闭了浏览器,我根本就没法去停止这段程序了,所以你需要一个执行脚本的开关,你可以用外部文件引入的方法来实现,在while循环的时候,include开关变量即可。那么就可以这样实现:

建立外部引入变量文件 switch.php 内容如下:


这个脚本只是测试可行,具体效率应该不高,对于lamp,你完全可以使用crontab 来实现。

3、服务器定时任务

服务器定时任务需要你是独立的服务器,或者是VPS,总之就是对系统的配置有足够的权限,虚拟空间就不要折腾这个方法了,因为你没有权限。

Windows平台

在 Windows 平台下您可以将cli\php.exe 和 .php 文件的双击属性相关联,您也可以编写一个批处理文件来用 PHP 执行脚本。我们把写好的程序放在一个目录下如 E:\web\mail.php 。

然后写一个windows批处理文件内容如下:

@D:\php\cli\php.exe E:\web\mail.php >d:\php\cli\sendmail.log

Pause
那个 D:\php\cli\php.exe 是我的PHP安装文件所在目录。Php.exe 就是windows PHP命令行模式的程序。

相关图片

相关文章