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 相关文章推荐
手把手教你使用DedeCms V3的在线采集图文教程
Apr 03 PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
PHP 加密解密内部算法
Apr 22 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
php微信公众平台开发类实例
Apr 01 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
jQuery Ajax之load()方法
2009/10/12 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
python版本的仿windows计划任务工具
2018/04/30 Python
详解Python中的测试工具
2019/06/09 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
工会趣味活动方案
2014/08/18 职场文书
教师业务学习材料
2014/12/16 职场文书
JavaScript 原型与原型链详情
2021/11/02 Javascript