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 VS ASP
Oct 09 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
php输入流php://input使用浅析
Sep 02 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
php cli模式下获取参数的方法
May 05 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
PHP多进程简单实例小结
Nov 09 PHP
在Laravel中使用MongoDB的方法示例
Nov 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
Three.js快速入门教程
2016/09/09 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python实现复制文件到指定目录
2019/10/16 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
华三通信H3C面试题
2015/05/15 面试题
青年文明号创建承诺
2014/03/31 职场文书
有关爱国演讲稿
2014/05/07 职场文书
服装设计专业求职信
2014/06/16 职场文书
授权委托书格式
2014/07/31 职场文书
入党函调证明材料
2014/12/24 职场文书
写给老婆的保证书
2015/02/27 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js