`

php计划任务的实现

阅读更多

php计划任务的实现 (zt)
文章分类:PHP编程
<?php
ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*5; // 每隔5分钟运行
do{
$fp = fopen('test.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval); // 等待5分钟
}while(true);
?>


php定时计划任务介绍2010-05-06 10:10以前对se特别感兴趣,但是自己又不会java,lucene等搜索引擎开发工具,于是不断挖掘php的功效。

最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取来获取需要的信息。但是性能上不能和搜索引擎的多线程抓取相比。

实现了上一步之后,又思考着,如果抓取可以自动定时获取,那么人工运行可执行页面也就省下来了。

后来也在一些php开源程序中了解到关于"计划任务"的效果:可以定时运行某程序,比如数据库备份,更新缓存,生成静态页面,生成网站地图等。

最近由于项目需要定时更新远程数据库到本地,网上搜了搜,还真找到了。

ignore_user_abort();函数搭配set_time_limit(0);和sleep($interval);即可实现以上自动更新。

先给出一个基本的范式,其中有个人的测试程序:

<?php
ignore_user_abort(); // run script in background
set_time_limit(0); // run script forever
$interval=30; // do every 15 minutes...
do{
$fp = fopen('text3.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval); // wait 15 minutes
}while(true);
?>

首先运行该程序,然后关闭该页面,程序仍然运行中,test会每隔30秒的填补到text3.txt文件。

实现效果如图:(略)

最后根据php手册简单介绍一些相关的知识:

1.连接处理:

在 PHP 内部,系统维护着连接状态,其状态有三种可能的情况:

0 - NORMAL(正常)
1 - ABORTED(异常退出)
2 - TIMEOUT(超时)

当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限时,TIMEOUT 状态的标记将被打开。

可以决定脚本是否需要在客户端中断连接时退出。有时候让脚本完整地运行会带来很多方便,即使没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 设置中对应的"php_value ignore_user_abort"以及 ignore_user_abort() 函数来控制。如果没有告诉 PHP 忽略用户的中断,脚本将会被中断,除非通过 register_shutdown_function() 设置了关闭触发函数。通过该关闭触发函数,当远程用户点击 STOP 按钮后,脚本再次尝试输出数据时,PHP 将会检测到连接已被中断,并调用关闭触发函数。

脚本也有可能被内置的脚本计时器中断。默认的超时限制为 30 秒。这个值可以通过设置 php.ini 的 max_execution_time 或 Apache .conf 设置中对应的"php_value max_execution_time"参数或者 set_time_limit() 函数来更改。当计数器超时的时候,脚本将会类似于以上连接中断的情况退出,先前被注册过的关闭触发函数也将在这时被执行。在该关闭触发函数中,可以通过调用 connection_status() 函数来检查超时是否导致关闭触发函数被调用。如果超时导致了关闭触发函数的调用,该函数将返回 2。

需要注意的一点是 ABORTED 和 TIMEOUT 状态可以同时有效。这在告诉 PHP 忽略用户的退出操作时是可能的。PHP 将仍然注意用户已经中断了连接但脚本仍然在运行的情况。如果到了运行的时间限制,脚本将被退出,设置过的关闭触发函数也将被执行。在这时会发现函数 connection_status() 返回 3。

2.相关函数:

int ignore_user_abort ( [bool setting] )
This function sets whether a client disconnect should cause a script to be aborted. It will return the previous setting and can be called without an argument to not change the current setting and only return the current setting.

int connection_aborted ( void )
Returns TRUE if client disconnected.

int connection_status ( void )
Returns the connection status bitfield.


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/webdesman/archive/2009/09/02/4510372.aspx
 

分享到:
评论

相关推荐

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

    `taskPHP`是一个专为PHP设计的定时计划任务框架,它允许开发者创建、管理和执行周期性任务,从而实现自动化的工作流程。这个框架的一大亮点是其多进程实现,能够有效地分配和运行任务,提高任务执行效率。 ### 1. ...

    支持windows与linux的php计划任务的实现方法

    【PHP计划任务实现】 在PHP开发中,有时我们需要在特定的时间执行某些任务,例如定期备份数据库、发送邮件或更新数据。这就是计划任务的作用,也称为定时任务。在Windows和Linux系统中,我们可以采用不同的方法来...

    Linux中的Crontab实现PHP计划任务linux操作系统电脑资料.doc

    在 PHP 中,我们可以使用 Crontab 来实现计划任务,例如定时发送内容、执行 PHP 脚本等。下面我们将详细介绍在 Linux 中使用 Crontab 实现 PHP 计划任务的方法。 一、使用 Crontab 执行 PHP 脚本 在 Crontab 中,...

    计划任务forthinkphp5

    在ThinkPHP5框架中,实现计划任务可以帮助开发者自动化处理后台任务,如数据同步、清理缓存、发送邮件等。 首先,我们需要理解在ThinkPHP5中如何设置计划任务。通常,我们可以利用Linux系统的`crontab`命令或者...

    thinkphp 5.1 定时任务,Crontab 计划任务-think-cron.zip

    总结,ThinkPHP 5.1的定时任务功能结合Crontab,让开发者能轻松实现后台任务自动化,极大地提升了工作效率。正确配置和使用Crontab,可以确保任务按预期执行,同时保持系统的稳定运行。通过理解和实践上述步骤,你将...

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

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

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

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

    ThinkPHP实现定时执行任务DEMO1_v3.2.1

    在 ThinkPHP 框架中实现定时任务,可以利用计划任务工具(如Linux的Cron Job)配合控制器或命令行接口(CLI)来完成。 1. **创建命令行接口**:在 ThinkPHP 中,我们可以创建一个 CLI 控制器,该控制器专门处理...

    基于PHP公司主页的开发与应用 —毕业论文任务书

    本资源摘要信息是关于基于PHP公司主页的开发与应用的毕业论文任务书。该任务书旨在指导学生完成基于PHP公司主页的开发与应用的毕业设计论文。 知识点1:PHP公司主页的开发 PHP公司主页的开发是指使用PHP语言开发...

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

    总的来说,cronManager是一个功能完备且易于使用的PHP定时任务解决方案,它利用多进程和消息队列技术实现了高效的任务调度,同时保持了与传统crontab的良好兼容性。对于PHP开发者来说,这是一款值得信赖的工具,可以...

    php任务发布平台源码

    "php任务发布平台源码"是一个基于PHP的项目,旨在实现一个功能完备的任务发布系统,允许用户发布、接受和管理任务。此平台包含了裂变海报和分销程序,使得任务推广更为高效。 1. **裂变海报**:裂变海报是一种常见...

    php实现的秒级定时任务工具,基于workerman的库-cron-job.zip

    在PHP中,实现定时任务通常依赖于外部工具如Cron,但这种方案可能不支持秒级别的精度。然而,通过使用像Workerman这样的PHP事件驱动的高性能网络通信框架,我们可以构建一个内部的定时任务系统,从而实现秒级的调度...

    PHP 多任务秒级定时器的实现方法

    ### PHP 多任务秒级定时器的实现方法 #### 概述 本文旨在探讨如何使用PHP语言实现一个具有秒级精度的多任务定时器。在实际应用中,定时任务是服务器端开发中不可或缺的一部分,例如定期执行数据同步、发送邮件通知...

    ThinkPHP实现定时执行任务DEMO

    当我们需要实现定时执行任务时,ThinkPHP框架同样提供了便利的支持。下面我们将详细探讨在ThinkPHP中实现定时任务的两种主要方法。 ### 1. 基于Crontab的定时任务 Crontab是Linux系统中用于设置周期性被执行任务的...

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

    也就是轮番判断,时间到了的, 就在用户进程中执行.uchome的计划任务代码在 ./source/function_cron.php上面只自己分析uchome代码关于计划任务大概的结果, 抛砖引玉. 希望谁有好的方法拿出来共享.ignore_user_abort()...

    php计划任务之ignore_user_abort函数实现方法

    在PHP编程中,计划任务(Cron Job)的实现是一个重要的功能,允许开发者安排脚本在特定时间自动执行。在本文中,我们将深入探讨如何利用`ignore_user_abort()`函数来实现一个不受用户中断影响的PHP计划任务。 `...

    php任务管理系统源码,带13国家语言

    【PHP任务管理系统源码解析与应用】 PHP任务管理系统是一种基于PHP编程语言开发的软件工具,专为组织和个人提供任务分配、跟踪和管理的功能。这样的系统通常包含用户界面、任务创建、任务分配、进度追踪、时间管理...

    用于window下定时执行php任务的小软件

    "用于window下定时执行php任务的小软件"是一个专门为Windows设计的工具,可以帮助我们方便地设置和管理这些定时任务。这个小软件可能是通过一个可执行文件`auto_request.exe`来实现功能的。 首先,我们需要理解定时...

    linux系统添加计划任务执行php文件.doc

    总的来说,通过正确设置cron服务的计划任务,你可以实现PHP文件的自动化执行,这对于定期数据备份、网站维护或其他需要定时触发的操作非常有用。只需确保理解并正确配置时间格式,就可以根据需求定制属于自己的计划...

Global site tag (gtag.js) - Google Analytics