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


Posted in PHP onJanuary 08, 2015

本文实例讲述了php计划任务之ignore_user_abort函数实现方法。分享给大家供大家参考。具体分析如下:

PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止,简单地使用 echo 语句无法确保信息发送,参阅 flush() 函数,代码如下:

<?php 

 ignore_user_abort(true); 

 set_time_limit(0); 

 

 while(1) { 

 $fp  = fopen('time_task.txt',"a+"); 

 
$str = date("Y-m-d h:i:s")."nr"; 

 
fwrite($fp,$str); 

 
fclose($fp); 

 
sleep(5);    //半小时执行一次

 } 

?>

定义和用法

ignore_user_abort() 函数设置与客户机断开是否会终止脚本的执行,本函数返回 user-abort 设置的之前的值(一个布尔值).

语法:ignore_user_abort(setting)

参数 描述
setting 可选,如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行,如果未设置该参数,会返回当前的设置.

提示和注释

注释:PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止,简单地使用 echo 语句无法确保信息发送,参阅 flush() 函数.

以下是补充资料

先来个简单的例子:

<?php
//php定时计划任务
ignore_user_abort(); // 函数设置与客户机断开是否会终止脚本的执行
set_time_limit(0); // 来设置一个脚本的执行时间为无限长
$interval=30;
do{
$fp = fopen(‘text3.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval); // 函数延迟代码执行若干秒
}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。

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
杏林同学录(二)
Oct 09 PHP
PHP通过COM使用ADODB的简单例子
Dec 31 PHP
介绍php设计模式中的工厂模式
Jun 12 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
php基于curl扩展制作跨平台的restfule 接口
May 11 PHP
php实现的任意进制互转类分享
Jul 07 PHP
php简单备份与还原MySql的方法
May 09 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
网站防止被刷票的一些思路与方法
Jan 08 #PHP
分享常见的几种页面静态化的方法
Jan 08 #PHP
php的ddos攻击解决方法
Jan 08 #PHP
php的sso单点登录实现方法
Jan 08 #PHP
PHP制作万年历
Jan 07 #PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 #PHP
CI框架中site_url()和base_url()的区别
Jan 07 #PHP
You might like
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
javascript开发中因空格引发的错误
2010/11/08 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
在Python中进行自动化单元测试的教程
2015/04/15 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
python妙用之编码的转换详解
2017/04/21 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
什么是组件架构
2016/05/15 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
陈欧广告词
2014/03/14 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
护理专业自荐信范文
2015/03/06 职场文书
保护地球的宣传语
2015/07/13 职场文书
爱护公物主题班会
2015/08/17 职场文书