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警告错误信息的解决方法
Jun 03 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
php PDO异常处理详解
Nov 20 PHP
PHP实现添加购物车功能
Mar 06 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
May 27 PHP
php输出反斜杠的实例方法
Sep 19 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 变量的定义方法
2010/01/26 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
python频繁写入文件时提速的方法
2019/06/26 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
小学清明节活动总结
2014/07/04 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
个人事迹材料范文
2014/12/29 职场文书
服务承诺书
2015/01/19 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
大学感恩节活动总结
2015/05/05 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
外出考察学习心得体会
2016/01/18 职场文书
导游词书写之黄山
2019/08/06 职场文书