本文主要介绍了php调度任务ignore_user_abort函数的实现方法,以实例的形式分析了php调度任务ignore_user_abort函数的实现方法,并对ignore_user_abort函数的用法进行了详细的分析。有需要的可以参考一下。
本文结合实例描述了php规划任务ignore_user_abort函数的实现方法。分享给你,供你参考。具体分析如下:
PHP不会检测用户是否已经断开连接,直到它试图向客户端发送信息。简单地使用echo语句并不能保证信息被发送。使用以下代码查看flush()函数:
复制代码如下:服务器端编程语言(Professional Hypertext Preprocessor的缩写)
ignore_user_abort(真);
set _ time _ limit(0);
while(1) {
$fp=fopen('time_task.txt ',' a ');
$str=date('Y-m-d h:i:s ')。NR’;
fwrite($fp,$ str);
fclose($ FP);
睡眠(5);//每半小时执行一次。
}
?
定义和用法
函数的作用是:设置从客户端断开连接是否会终止脚本的执行。这个函数返回由用户中止设置的前一个值(一个布尔值)。
语法:ignore_user_abort(setting)
参数
形容
环境
可选。如果设置为true,将忽略与用户的断开连接。如果设置为false,脚本将停止运行。如果未设置该参数,将返回当前设置。
提示和注释
注释:PHP不会检测用户是否已经断开连接,直到试图向客户端发送信息。简单地使用echo语句不能保证信息的发送。请参见flush()函数。
以下是补充资料
让我们从一个简单的例子开始:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
//php定期调度任务
ignore _ user _ abort();//该函数设置从客户端断开连接是否会终止脚本的执行。
set _ time _ limit(0);//将脚本的执行时间设置为无限长。
$ interval=30
做{
$fp=fopen('text3.txt ',' a ');
fwrite($fp,' test ');
fclose($ FP);
睡眠($间隔);//该函数将代码执行延迟几秒钟
}while(真);
?
首先,运行程序,然后关闭页面。程序仍在运行,test将每30秒填充一次text3.txt文件。
最后,介绍php手册中的相关知识:
1.连接处理:
在PHP内,系统维护连接状态,其状态有三种可能的情况:复制代码如下:
0正常(正常)
1中止(异常退出)
2超时(超时)
当PHP脚本在正常状态下正常运行时,连接是有效的。当远程客户端断开连接时,中止状态的标志将被打开。远程客户端连接的中断通常是由用户单击停止按钮引起的。当连接时间超过PHP的时间限制时,超时状态标志将被打开。
您可以决定当客户端断开连接时脚本是否需要退出。有时让脚本完全运行是很方便的,即使没有远程浏览器接受脚本的输出。默认情况下,当远程客户端连接中断时,脚本将退出。这个过程可以通过php.ini的ignore_user_abort或者Apache中对应的“php_value ignore_user_abort”和ignore_user_abort()函数来控制。会议设置。如果PHP没有被告知忽略用户的中断,除非通过register_shutdown_function()设置了关机触发函数,否则脚本会被中断。有了这个关闭触发器函数,当脚本在远程用户点击停止按钮后再次尝试输出数据时,PHP会检测到连接已经中断,并调用关闭触发器函数。
脚本也可能被内置的脚本定时器中断。的默认超时限制是30秒。这个值可以通过设置php.ini的max_execution_time或者Apache中对应的“php_value max_execution_time”参数来改变。conf设置或set_time_limit()函数。当计数器超时时,脚本会类似于上面的连接中断退出,之前注册的关机触发函数也会在此时执行。在这个shutdown trigger函数中,您可以通过调用connection_status()函数来检查超时是否会导致shutdown trigger函数被调用。如果超时导致调用关闭触发器函数,该函数将返回2。
注意:中止和超时状态可以同时有效。当告诉PHP忽略用户的退出操作时,这是可能的。PHP仍然会注意用户已经断开连接但脚本仍在运行的情况。如果达到运行时间限制,将退出脚本并执行设置的关机触发功能。此时,您会发现函数connection_status()返回3。
希望这篇文章对大家的php编程有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。