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 相关文章推荐
优化使用mysql存储session的php代码
Jan 10 PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
基于PHP异步执行的常用方式详解
Jun 03 PHP
php给图片加文字水印
Jul 31 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 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
PHP网站基础优化方法小结
2008/09/29 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
应届生.NET方向面试题
2015/05/23 面试题
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
大学生新闻专业个人自我评价
2013/11/12 职场文书
公证书标准格式
2014/04/10 职场文书
教师暑期培训感言
2014/08/15 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript