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定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip php定时任务框架使用案例源码.zip
利用这个特性,我们可以实现非常牛的功能,也就是通过它来实现定时任务的激活,激活之后就随便它自己怎么办了,实际上就有点类似于后台任务。 而sleep(n)则是指当程序执行到这里时,暂时不往下执行,而是休息n秒钟...
要停掉定时任务 修改cron-switch文件不存在即可。重命名下就行了。但是停止时间为 定时cron.php 中当前运行下一次 的时间触发停止。。 使用情况:有可能出现进程过多,apache 停止。 IIS 运行暂无发现问题。 linux ...
cronManager是一个纯PHP实现的定时任务管理工具,api简单清晰,采用的是多进程模型,进程通信采用的是消息队列,任务监控也提供了简单的命令,方便易用
linux创建PHP定时任务 下面所有的前提是服务器存在PHP环境 首先创建一个php文件:示例内容如下: <?php $ch=curl_init(); //设置请求 curl_setopt($ch,CURLOPT_URL,写上要请求的URL); curl_setopt($ch,CURLOPT_...
本文实例讲述了PHP定时任务获取微信access_token的方法。分享给大家供大家参考,具体如下: 微信access_token在开发时会变的好像是几分种不一样了,这里我们来介绍关于PHP定时任务获取微信access_token的方法。 最近...
本文主要给大家介绍了关于CentOS7执行PHP定时任务的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 一、CentOS 7 安装crontab: yum install crontabs 语法: crontab [-u <用户名称...
实现PHP Cron,也就是PHP定时任务,通过本地文件记录schedules,然后通过fsockopen实现非阻塞式的后台访问对应的url来实现定时任务,通过sleep实现定时,如果错过任务,则通过用户访问来执行该任务 文件目录 cron ...
|PHP定时任务 |@黑眼诗人 |————————— */ ignore_user_abort(true); //客户端断开时忽略脚本中止(允许脚本一直执行) set_time_limit(0); //设置脚本最长执行时间,0不限制 do{ $fp = fopen(‘auto....
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
主要介绍了详解PHP执行定时任务的几种实现思路,PHP的定时任务功能必须通过和其他工具结合才能实现,们就来深入的解析几种常见的php定时任务的思路
python定时任务 每天运行一次 在 Python 中可以使用 schedule 模块来实现定时任务。以下是一个每天运行一次的例子: import schedule import time def job(): print("I'm running at 5:00am every day.") # 设定...
ThinkPHP实现定时执行任务的两种方法
如果非要PHP去实现定时任务, 可以有以下几种解决方案: 一. 简单直接不顾后果型 <?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序...
PHP定时执行的三种方式实现 1、windows 的计划任务 2、linux的脚本程序 3、让web浏览器定时刷新 具体实现 1、windows计划任务 PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,...
taskPHP基于php开发的定时计划任务框架,多进程实现任务的分配和运行,支持多进程和多线程模式需要安装pthreads扩展(可选),支持linux和windows。