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默认安装产生系统漏洞
Oct 09 PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
php跨服务器访问方法小结
May 12 PHP
简单了解PHP编程中数组的指针的使用
Nov 30 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 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+ajax 无刷新删除数据
2010/02/20 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
PHP反射API示例分享
2016/10/08 PHP
js Math 对象的方法
2013/09/01 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
python发布模块的步骤分享
2014/02/21 Python
Python函数中定义参数的四种方式
2014/11/30 Python
Python利用ansible分发处理任务
2015/08/04 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
如何完美的建立一个python项目
2020/10/09 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
铁路工务反思材料
2014/02/07 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
体育课课后反思
2014/04/24 职场文书
2014个人年度工作总结
2014/12/15 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
开展警示教育活动总结
2015/05/09 职场文书
海底两万里读书笔记
2015/06/26 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
Python打包为exe详细教程
2021/05/18 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
python全面解析接口返回数据
2022/02/12 Python