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中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
php一维二维数组键排序方法实例总结
Nov 13 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
laravel 时间格式转时间戳的例子
Oct 11 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
js倒计时抢购实例
2015/12/20 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
Python实现翻转数组功能示例
2018/01/12 Python
实例讲解python中的协程
2018/10/08 Python
python实现按首字母分类查找功能
2019/10/31 Python
Python API len函数操作过程解析
2020/03/05 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
优秀共产党员先进事迹材料
2014/05/06 职场文书
出国留学担保书
2014/05/20 职场文书
国家助学金感谢信
2015/01/21 职场文书
捐书活动倡议书
2015/04/27 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书