- 浏览: 1073096 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (30)
- Spring (14)
- iBATIS (6)
- Hibernate (13)
- JVM (5)
- JSON (10)
- Ajax (5)
- Flex (1)
- JavaScript (25)
- PowerDesigner (4)
- 项目管理 (7)
- 数据库 (29)
- 生活 (18)
- 软件应用 (21)
- 无线技术 (2)
- Linux (39)
- TOP开发学习 (2)
- JAVA工具小TIPS (2)
- Java通用 (52)
- XML (3)
- 软件测试 (29)
- Maven (10)
- Jquery (1)
- 正则表达式 (3)
- 应用服务器 (15)
- Android (5)
- linux 和windowx 下 tomcat 设置JVM (8)
- 应用服务器 连接池 (4)
- Linux 后台输出中文乱码 (1)
- Hadoop (28)
- python (2)
- Kafka (7)
- Storm (5)
- Elasticsearch (7)
- fddd (1)
最新评论
-
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
分布式消息系统Kafka初步 -
小灯笼:
LoadRunner性能测试实战课程网盘地址:http://p ...
LoadRunner性能测试应用(八) -
成大大的:
Kafka分布式消息系统实 ...
分布式消息系统Kafka初步 -
hulalayaha2:
Loadrunner性能测试视频教程下载学习:http://p ...
LoadRunner性能测试应用(八) -
993042835:
搞好 谢谢
org.hibernate.exception.ConstraintViolationException: could not delete:
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
发表评论
-
打开“添加和删除程序”时报错:0x00310030,该内存不能为"writ
2012-05-09 18:08 872打开“添加和删除程序”时报错:0x00310030,该内存不能 ... -
只要三步就能找回被删除并清空的文件 转的
2011-03-22 09:06 931只要三步就能找回被删除并清空的文件 步骤: 1、单击“开始 ... -
把文件下载到网络服务器上wget
2010-09-21 16:24 954连接到网络服务器 #cd /usr #wget 'h ... -
给你的mp3大换血 【很好听的歌】
2010-08-19 12:53 1088这些歌, 请戴上耳机, 调大音量, 一个人听 ,全世界 都是你 ... -
photoshop 30种PS技术 让你照片美到不行~婚纱照可以省一大笔钱了
2010-08-19 12:52 1898照片名称:调出照片柔和的蓝黄色-简单方法, 1、打 ... -
云计算:程序员重回个人英雄时代
2010-07-16 13:55 822文/ 刘 鹏 曾几何时,那些耳熟能详的程序英雄的名字渐渐地 ... -
如何通过TCPIP端口为系统添加网络打印机(转)
2010-07-09 09:16 4135转自 http://www.xici.net/main.asp ... -
Windows下用cmd命令安装及卸载服务
2010-06-29 11:41 2202第一种方法: 1. 开始 ->运行 ->cm ... -
Loadrunner 8.1 测试利器相关下载及破解方法(精)转
2010-06-22 14:29 3562Loadrunner 8.1 测试利器相关下载及破解方法(精) ... -
在resin.conf中设置最大值 threadmax
2010-04-22 17:39 4742<!--S 头部开始--> 在resin ... -
resin优化经验
2010-04-22 17:34 18822008-02-19 17:03 Resin T ... -
全球免费软件推荐(国外篇)
2010-04-21 14:25 1213本文是最优秀免费软件工具集合,我们划分为16个种类,其中包含了 ... -
myEclipse 6.5 中如何添加TCP/IP monitor
2010-04-15 17:44 2323myEclipse 6.5 中如何添加TCP/IP monit ... -
脑图软件推荐——PersonalBrain(转)
2010-03-14 10:40 2194脑图软件推荐——Persona ... -
别树一帜的思维图软件:PersonalBrain(转)
2010-03-12 22:20 2857别树一帜的思维图软 ... -
在tomcat中设置编码格式
2010-02-23 13:49 4399在tomcat中设置编码格式 <Conn ... -
三条命令让你xp启动如飞
2010-02-11 13:58 833三条命令让你xp启动如飞1、 ... -
你的电脑不再是蜗牛--加速绝招
2010-02-11 13:45 1494你的电脑不再是蜗牛--加速绝招 电脑速度慢 1 ... -
电脑其实很好玩,玩好了其实很无耻
2010-02-11 13:38 767电脑其实很好玩,玩好了其实很无耻 步骤:1、单击“开始 ... -
想让你的迅雷下载速度提高4倍吗?
2010-02-11 13:32 3692想让你的迅雷下载速度提高4倍吗? 1.首先打开迅雷的安 ...
相关推荐
taskPHP基于php开发的定时计划任务框架,多进程实现任务的分配和运行,支持多进程和多线程模式需要安装pthreads扩展(可选),支持linux和windows。
不知道能程序的性能会不会影响很大! 复制代码 代码如下: ignore_user_abort();... 您可能感兴趣的文章:php定时计划任务的实现方法详解php中定时计划任务的实现原理PHP定时执行计划任务的多种方法小结PHP定时执行
Linux中的Crontab实现PHP计划任务linux操作系统电脑资料.doc
PHP 多任务秒级定时器的实现方法 PHP 多任务秒级定时器的实现方法
用PHP实现任务发布平台该怎么做? php任务发布平台源码,含裂变海报和分销程序。 仿威客任务发布平台手机版
也就是轮番判断,时间到了的, 就在用户进程中执行.uchome的计划任务代码在 ./source/function_cron.php上面只自己分析uchome代码关于计划任务大概的结果, 抛砖引玉. 希望谁有好的方法拿出来共享.ignore_user_abort()...
taskPHP基于php开发的定时计划任务框架,利用多进程实现任务的分配和运行,利用内存共享实现进程间通信,支持多线程模式需要安装pthreads扩展(可选),支持linux和windows。有较好的伸缩性、扩展性、健壮稳定性而被多家...
本文实例讲述了php计划任务之ignore_user_abort函数实现方法。分享给大家供大家参考。具体分析如下: PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止,简单地使用 echo 语句无法确保信息发送,参阅 ...
cronManager是一个纯PHP实现的定时任务管理工具,api简单清晰,采用的是多进程模型,进程通信采用的是消息队列,任务监控也提供了简单的命令,方便易用
基于PHP公司主页的开发与应用 —毕业论文任务书
基于PHP的办公自动化管理系统设计与实现 毕业设计任务书.pdf基于PHP的办公自动化管理系统设计与实现 毕业设计任务书.pdf基于PHP的办公自动化管理系统设计与实现 毕业设计任务书.pdf基于PHP的办公自动化管理系统设计...
ThinkPHP实现定时执行任务的两种方法
《基于PHP的邮件收发系统的设计与实现》校外任务书.docx《基于PHP的邮件收发系统的设计与实现》校外任务书.docx《基于PHP的邮件收发系统的设计与实现》校外任务书.docx《基于PHP的邮件收发系统的设计与实现》校外...
PHP定时执行的三种方式实现 1、windows 的计划任务 2、linux的脚本程序 3、让web浏览器定时刷新 具体实现 windows计划任务 PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让...
一个简易,方便的 windows系统计划任务调用器. 帮助实现PHP等脚本语言无法做计划任务后台更新所使用
php swoole异步任务实现代码(包括服务器端、客户端),解决高并发问题
利用这个特性,我们可以实现非常牛的功能,也就是通过它来实现定时任务的激活,激活之后就随便它自己怎么办了,实际上就有点类似于后台任务。 而sleep(n)则是指当程序执行到这里时,暂时不往下执行,而是休息n秒钟...
主要介绍了支持windows与linux的php计划任务的实现方法,较为详细的讲述了php计划任务中涉及到的php程序实现方法、Windows计划任务实现方法等,需要的朋友可以参考下
实现PHP Cron,也就是PHP定时任务,通过本地文件记录schedules,然后通过fsockopen实现非阻塞式的后台访问对应的url来实现定时任务,通过sleep实现定时,如果错过任务,则通过用户访问来执行该任务 文件目录 cron ...