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 相关文章推荐
PHP5 安装方法
Oct 09 PHP
文件上传程序的全部源码
Oct 09 PHP
php学习之function的用法
Jul 14 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
PHP静态文件生成类实例
Nov 29 PHP
PHP开发注意事项总结
Feb 04 PHP
php文件下载处理方法分析
Apr 22 PHP
php微信开发之音乐回复功能
Jun 14 PHP
php输出反斜杠的实例方法
Sep 19 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 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完整的日历类(CLASS)
2006/11/27 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
使javascript也能包含文件
2006/10/26 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python编码爬坑指南(必看)
2016/06/10 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
python根据时间获取周数代码实例
2019/09/30 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
python集合能干吗
2020/07/19 Python
基于Python正确读取资源文件
2020/09/14 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
和睦家庭事迹
2014/05/14 职场文书
法制演讲稿
2014/09/10 职场文书
出差报告范文
2014/11/06 职场文书
Linux中如何安装并部署Redis
2022/04/18 Servers