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的单引号和双引号 字符串效率
May 27 PHP
允许phpmyadmin空密码登录的配置方法
May 29 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
php实现用户登陆简单实例
Apr 04 PHP
PHP重载基础知识回顾
Sep 10 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
新闻分类录入、显示系统
2006/10/09 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
python2.7的编码问题与解决方法
2016/10/04 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
python找出完数的方法
2018/11/12 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
三年级评语大全
2014/04/23 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
房产遗嘱范本
2015/08/06 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
Python 发送SMTP邮件的简单教程
2021/06/24 Python