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 相关文章推荐
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
php单例模式的简单实现方法
Jun 10 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
Yii框架弹出框功能示例
Jan 07 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 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递归列出所有文件和目录的代码
2008/09/10 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
php图片添加水印例子
2016/07/20 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
详解vue中localStorage的使用方法
2018/11/22 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
Python3 操作符重载方法示例
2017/11/23 Python
Python实现Kmeans聚类算法
2020/06/10 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
pip安装python库的方法总结
2019/08/02 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
医学院校毕业生自荐信范文
2014/01/01 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
525心理活动总结
2014/07/04 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
python for循环赋值问题
2021/06/03 Python
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers