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 相关文章推荐
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
PHP新手NOTICE错误常见解决方法
Dec 07 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
php实现比较全的数据库操作类
Jun 18 PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 PHP
Yii2数据库操作常用方法小结
May 04 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 PHP
Laravel 框架返回状态拦截代码
Oct 18 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
推荐十款免费 WordPress 插件
2015/03/24 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
JavaScript 调试器简介
2009/02/21 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
JS 对象介绍
2010/01/20 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Django中使用group_by的方法
2015/05/26 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
python中while和for的区别总结
2019/06/28 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
报纸媒体创意广告词
2014/03/17 职场文书
给孩子的新年寄语
2014/04/08 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
班主任工作实习计划
2015/01/16 职场文书
前台接待岗位职责范本
2015/04/03 职场文书