`

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/

分享到:
评论

相关推荐

    【PHP定时任务】基于thinkphp定时任务计划任务.zip

    【PHP定时任务】基于thinkphp定时任务计划任务.zip 【PHP定时任务】基于thinkphp定时任务计划任务.zip 【PHP定时任务】基于thinkphp定时任务计划任务.zip 【PHP定时任务】基于thinkphp定时任务计划任务.zip 【PHP...

    php定时任务框架使用案例源码.zip

    本案例是关于PHP定时任务框架的使用,提供了源码供学习和参考。 首先,我们要理解什么是PHP定时任务。在PHP中实现定时任务,通常有两种方式:一种是通过PHP的Cron Job(Linux系统的计划任务)配合CLI(命令行接口)...

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

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

    PHP定时任务删除文件方法

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

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

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

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

    总的来说,"用于window下定时执行php任务的小软件"提供了一个便捷的解决方案,让Windows用户能够轻松地安排和管理PHP定时任务,而无需深入了解系统级的调度操作。通过`auto_request.exe`,我们可以更加专注于PHP脚本...

    linux创建PHP定时任务的实例

    本文将详细介绍如何在Linux环境下创建PHP定时任务的实例。 首先,确保你的服务器已经安装了PHP环境,因为PHP是执行定时任务的核心语言。你可以通过运行`php -v`命令来检查PHP是否已安装以及其版本。 1. **创建PHP...

    详解PHP执行定时任务的实现思路

    在没有服务器管理员权限,比如租用虚拟主机的情况下,实现PHP定时任务变得更加复杂。这时,我们可以通过定时访问PHP脚本的URL来实现。一旦访问开始,即使用户断开连接,服务器上的PHP脚本也会继续执行,直到完成。...

    纯PHP 定时脚本_定时任务_计划任务

    要停掉定时任务 修改cron-switch文件不存在即可。重命名下就行了。但是停止时间为 定时cron.php 中当前运行下一次 的时间触发停止。。 使用情况:有可能出现进程过多,apache 停止。 IIS 运行暂无发现问题。 linux ...

    详解PHP实现执行定时任务

    这些基本技术是学习PHP定时任务实现的基础,但更专业的应用场景下,可能需要考虑使用`crontab`这样的系统级工具来处理定时任务。在实际开发中,我们还需要注意脚本的健壮性,比如错误处理、日志记录等,以确保定时...

    CentOS7如何执行PHP定时任务详解

    本文将详细介绍如何在CentOS 7 中设置PHP定时任务。 首先,为了设置定时任务,我们需要安装`crontab`工具。在CentOS 7中,可以通过`yum`包管理器来安装: ```bash yum install crontabs ``` 安装完成后,我们可以...

    PHP定时任务获取微信access_token的方法

    本文实例讲述了PHP定时任务获取微信access_token的方法。分享给大家供大家参考,具体如下: 微信access_token在开发时会变的好像是几分种不一样了,这里我们来介绍关于PHP定时任务获取微信access_token的方法。 最近...

    PHP定时执行任务方法.txt 自动维护

    #### 一、Linux服务器下的定时任务实现 ...通过以上两种方法,无论是在Linux还是Windows环境下,都可以方便地实现PHP定时任务的执行。这对于需要定期执行某些操作的应用场景非常有用,比如数据备份、日志清理等。

    ThinkPHP实现定时执行任务DEMO

    下面我们将详细探讨在ThinkPHP中实现定时任务的两种主要方法。 ### 1. 基于Crontab的定时任务 Crontab是Linux系统中用于设置周期性被执行任务的工具。在ThinkPHP框架中,我们可以通过编写控制器和逻辑来处理定时...

    php-cron:实现PHP Cron,也就是PHP定时任务,通过本地文件记录schedules,然后通过fsockopen实现非阻塞式的后台访问对应的url来实现定时任务,通过sleep实现定时,如果错过任务,则通过用户访问来执行该任务(还未完善)

    实现PHP Cron,也就是PHP定时任务,通过本地文件记录schedules,然后通过fsockopen实现非阻塞式的后台访问对应的url来实现定时任务,通过sleep实现定时,如果错过任务,则通过用户访问来执行该任务 文件目录 cron ...

    thinkPHP3.2.3定时执行任务

    在ThinkPHP3.2.3中,虽然没有内置的Cron服务,但我们可以借助Linux服务器的Cron机制结合PHP脚本来实现定时任务。要创建一个Cron任务,我们需要在服务器的Crontab配置文件中添加一行命令,指定执行的PHP脚本及执行...

    PHP定时任务延缓执行的实现

    |PHP定时任务 |@黑眼诗人 |————————— */ ignore_user_abort(true); //客户端断开时忽略脚本中止(允许脚本一直执行) set_time_limit(0); //设置脚本最长执行时间,0不限制 do{ $fp = fopen(‘auto....

    基于thinkphp5框架的定时执行任务

    在`config/swoole_http.php`中配置Swoole服务器,并启用定时任务功能。 ```php return [ 'server' => [ 'worker_num' => 4, // 工作进程数量 'task_worker_num' => 2, // 任务进程数量 'enable_coroutine' => ...

Global site tag (gtag.js) - Google Analytics