PHP定时任务_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP定时任务

PHP定时任务

 2012/8/21 11:06:35  flyer0126  程序员俱乐部  我要评论(0)
  • 摘要:PHP属于弱类型解释型语言,它的实现决定了它没有Java和.Net这种AppServer的概念,而http协议是一个无状态的协议,PHP只能被用户触发调用,调用后会自动退出内存,没有常驻内存,就没有办法准确的定时处理。如果需要用PHP定时执行某些任务的话,可以有如下方法:1、Linux下crontab,windows下计划任务2、set_time_limit(0);ignore_user_abort(true);死循环第一种:crontab定期执行的php文件
  • 标签:PHP

????? PHP属于弱类型解释型语言,它的实现决定了它没有Java和.Net这种AppServer的概念, 而http协议是一个无状态的协议, PHP只能被用户触发调用, 调用后会自动退出内存, 没有常驻内存, 就没有办法准确的定时处理。


????? 如果需要用PHP定时执行某些任务的话, 可以有如下方法:
??? 1、Linux下crontab, windows下计划任务
??? 2、set_time_limit(0);
?? ? ? ? ignore_user_abort(true);
?? ? ? ? 死循环

?

????? 第一种:crontab定期执行的php文件,一般需要有个表来记录每个任务的名称、当前进程ID、更新时间及进程开始ID 等信息。批处理过程包括:执行前准备、执行、执行后处理,整个处理过程可以利用OO思想来封装个批处理基类,每个批处理任务可以继承这个基类来实现数据的处理。

????? 第二种:通过访问此文件触发执行,存在Apache服务器重启后或机器重启(windows环境)后终止的问题。示例如下:

ignore_user_abort(true);  // 设置关闭浏览器后也可执行
set_time_limit(0);  // 设置相应时间无限制,原默认30s

function write_txt()
{
	$filename = 'test.txt';
	if (!file_exists($filename))
	{
		$fp = fopen($filename, 'w');
		fclose($fp);
	}
	
	$fp = fopen($filename, 'r+');
	$str = file_get_contents($filename);
	$str .= date('Y-m-d H:i:s')."\r\n";
	fwrite($fp, $str);
	fclose($fp);
}

function do_cron()
{
	write_txt();
	sleep(30);
}

while (1)
{
	do_cron();
}

?connection_aborted() — 检查客户端是否已经断开 断开则返回1,否则返回0
?connection_status — 返回连接的状态位 0 - NORMAL(正常); 1 - ABORTED(异常退出); 2 - TIMEOUT(超时

?

参考文章 :http://us2.php.net/manual/zh/index.php

?????????????? http://blog.163.com/zbstrive_work@126/blog/static/165378687201141143512114/

发表评论
用户名: 匿名