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访问查询mysql数据的三种方法
Oct 09 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
一个经典的PHP验证码类分享
Nov 18 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
yii框架数据库关联查询操作示例
Oct 14 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 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
python使用PyQt5的简单方法
2019/02/27 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
Python for i in range ()用法详解
2020/09/18 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
大学生个人求职信范文
2013/09/21 职场文书
领导失职检讨书
2014/02/24 职场文书
一年级班主任感言
2014/03/08 职场文书
教师求职自荐信
2014/03/09 职场文书
电视节目策划方案
2014/05/16 职场文书
怎样写离婚协议书
2014/09/10 职场文书
创业计划书之个人工作室
2019/08/22 职场文书