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 shell命令合并图片的代码
Jun 23 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
May 15 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
详解php语言最牛掰的Laravel框架
Nov 20 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP chop()函数讲解
Feb 11 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
php二维数组转成字符串示例
2014/02/17 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
跟老齐学Python之关于类的初步认识
2014/10/11 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
关于礼仪的演讲稿
2014/01/04 职场文书
大学活动总结范文
2014/04/29 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL