php ignore_user_abort() 函数设置与客户机断开脚本继续执行
ignore_user_abort() 可以实现当客户端关闭后仍然可以执行PHP代码,可保持PHP进程一直在执行,可实现所谓的计划任务功能与持续进程,只需要开启执行脚本,除非 apache 等服务器重启或有脚本有输出,该PHP脚本将一直处于执行的状态,初看很实用,不过代价是一个PHP执行脚本的持续进程,开销很大,但却可以 实现很多意想不到的功能。
定义和用法
ignore_user_abort() 函数设置与客户机断开是否会终止脚本的执行。
本函数返回 user-abort 设置的之前的值(一个布尔值)。
语法
ignore_user_abort(setting)
参数 描述
setting 可选。如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行。如果未设置该参数,会返回当前的设置。
注释:PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止。简单地使用 echo 语句无法确保信息发送,参阅 flush() 函数。
使用示例:
(1)结合set_time_limit()函数实现一个循环脚本执行任务
<?php
ignore_user_abort();
set_time_limit(0);
$interval=60*15;//说明:每隔15分钟循环执行
do{
//执行的业务
7
}while(true);
(2)自定义实现文件输出并跟踪ignore_user_abort()函数的执行结果
ignore_user_abort(TRUE);
set_time_limit(0);
$interval=10;
$stop=1;
do{
if($stop==10) break;
file_put_contents('phpernote.com.php',' Current Time: '.time().' Stop: '.$stop);
$stop++;
sleep($interval);
}while(true);
打开 phpernote.com.php 文件,文件内容如下:
Current Time: 1273735029 Stop: 9
其原理是即使客户端终止脚本,仍然每隔10秒钟执行一次,并打印出当前时间与终止点,这样就可以测试出ignore_user_abort()函数的具体效果。
通过实例发现使用 ignore_user_abort()函数在实现计划任务,持续进程等方面的业务时候还是非常实用的。
热文精选
更多资讯推荐
更多- Stable Diffusion 2.0 发布,加强成人内容过滤
- .NET 7 正式发布
- A3Mall 开源商城系统 v2.1 发布
- FydeOS v14 版本更新:优化输入法体验+重构安卓子系统+全新应用启动器
- ThinkPHP V6.0.8版本发布——多环境变量配置支持
- 毕昇 JDK 8u292、11.0.11 发布!
- KubeVela 1.0:开启可编程式应用平台的未来
- Eclipse 4.19 稳定版发布
- 阿里巴巴 Arthas 3.5.0 版本发布,支持反编译打印行号和统一鉴权
- Debian 11 Bullseye 即将进入冻结,Debian 13 代号 Trixie
- Rancher 2.5 发布,新增支持边缘集群的 GitOps
- FlashDB IoT 超轻量级嵌入式数据库