PHP ignore_user_abort函数详细介绍和使用实例


Posted in PHP onJuly 15, 2014

ignore_user_abort 设置与客户机断开是否会终止脚本的执行。

本函数返回 user-abort 设置的之前的值(一个布尔值)。
int ignore_user_abort ([ string $value ] )

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

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

例-1 一个的ignore_user_abort()的例子,配合set_time_limit()函数 和一个死循环就可以实现计划任务功能。

<?php

ignore_user_abort(true);

 

set_time_limit(0);

echo 'Testing connection handling in PHP';

while (1)

{

    if (connection_status() != CONNECTION_NORMAL) {

 

        break;

 

    }

    // Sleep for 10 seconds

    sleep(10);

}

?>

PHP内置函数研究系列第二期,采用PHP函数ignore_user_abort实现计划任务与持续进程实例,并通过一个可检测效果的实例讨论ignore_user_abort()函数的作用与用法。

ignore_user_abort() 可以实现当客户端关闭后仍然可以执行PHP代码,可保持PHP进程一直在执行,可实现所谓的计划任务功能与持续进程,只需要开启执行脚本,除非 apache等服务器重启或有脚本有输出,该PHP脚本将一直处于执行的状态,初看很实用,不过代价是一个PHP执行脚本的持续进程,开销很大,但却可以 实现很多意想不到的功 能。

其描述为设置与客户机断开是否会终止脚本的执行。

附:另一篇介绍

一,函数原型

int ignore_user_abort ( [bool setting] )

二,版本兼容
PHP 3 >= 3.0.7, PHP 4, PHP 5

三,函数基础用法与实例
1,函数基础用法

<?php

ignore_user_abort();

?>

说明:调用ignore_user_abort()函数声明即使客户机断开不终止脚本的执行。

2,结合set_time_limit()函数实现一个循环脚本执行任务

<?php

ignore_user_abort();

set_time_limit(0);

$interval=60*15;

do{

//执行的业务

}while(true);

?>

说明:每隔15分钟循环执行

3,自定义实现文件输出并跟踪ignore_user_abort()函数的执行结果

<?php

ignore_user_abort ( TRUE );

set_time_limit ( 0 );

$interval = 10;

$stop = 1;

do {

    if( $stop == 10 ) break;

    file_put_contents('liuhui.php',' Current Time: '.time().' Stop: '.$stop);

    $stop++;

    sleep ( $interval );

} while ( true );

?>

打开liuhui.php文件,文件内容如下:
Current Time: 1273735029 Stop: 9

其原理是即使客户端终止脚本,仍然每隔10秒钟执行一次,并打印出当前时间与终止点,这样就可以测试出ignore_user_abort()函数的具体效果。

通过实例发现ignore_user_abort()函数非常实用,实现计划任务,完成后续任务,持续进程等非常有效。更多说明请参与PHP手册。请关注下一期PHP内置函数研究系列。

PHP 相关文章推荐
做个自己站内搜索引擎
Oct 09 PHP
PHP去除数组中重复的元素并按键名排序函数
Aug 18 PHP
php 获取客户端的真实ip
Nov 30 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 #PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 #PHP
PHP魔术引号所带来的安全问题分析
Jul 15 #PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 #PHP
PHP文件锁定写入实例解析
Jul 14 #PHP
ThinkPHP惯例配置文件详解
Jul 14 #PHP
2014年10个最佳的PHP图像操作库
Jul 14 #PHP
You might like
Oracle 常见问题解答
2006/10/09 PHP
PHP4实际应用经验篇(2)
2006/10/09 PHP
php中使用sftp教程
2015/03/30 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
List Installed Hot Fixes
2007/06/12 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
原生js开发的日历插件
2017/02/04 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python读写unicode文件的方法
2015/07/10 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
教育学专业毕业生的自我评价
2013/11/21 职场文书
党校学习思想汇报
2014/01/06 职场文书
护理目标管理责任书
2014/07/25 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
教师节班会主持词
2015/07/06 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书