当前位置:首页 > PHP > 正文内容

php关闭浏览器继续运行

高老师6年前 (2020-03-02)PHP1849
//设置客户端断开依然运行
ignore_user_abort(true);

//设置脚本不超时
set_time_limit(0);

//死循环每隔1秒访问一次网址
while (true)
{
    sleep(1);

    @file_get_contents('http://xingxinghan.cn/?id=5');
}

上面的代码我在windows下的phpenv集成环境测试通过,但是在线上刷数据时出现异常,nginx 502 后php停止运行,一脸懵逼。看了下网上说的可能,逐一排查:

(1).修改php.ini的max_execution_time时间,我一看就知道这个不行,因为set_time_limit已经设置脚本执行不超时,但是还是测试下嘛,将max_execution_time修改为3600秒,1小时,依然不行。

(2).fpm的request_terminate_timeout配置,request_terminate_timeout 适用于当max_execution_time由于某种原因无法终止脚本的时候,会把这个php-fpm请求干掉,改为1小时果真可以了,哈哈

在fpm中request_terminate_timeout才是真正控制进程执行时间的。

提示:通过ignore_user_abort函数设置了当客户端浏览器关闭当前脚本继续运行,但是依然会受到php脚本超时的时间限制,于是再设置下超时时间即可。启动后会占用一个cgi进程,及其不优雅。

看更详细的版本,看我的另外一篇文章https://blog.20230611.cn/?id=572

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/127.html

分享给朋友:

“php关闭浏览器继续运行” 的相关文章

php scoket,php webscoket,php webscoket 服务器

php scoket,php webscoket,php webscoket 服务器

项目需要使用websocket推送最新订单,客户服务器非linux不支持swoole,因此使用原生,直接上代码(1).PHP服务端<?php ini_set('error_reporting', E_ALL ^ E_NOTICE); ini_set...

php 将数组键值转为变量

php 将数组键值转为变量

<?php $data=array('a'=>1,'b'=>2,'c'=>3,'d'=>4); extract($data); var_dump($a,$b,$c,$d); ?>在人人商城中捡到的...

php解决浮点数精度问题

php解决浮点数精度问题

首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php   &n...

php arrayaccess的应用场景:配置管理器

php arrayaccess的应用场景:配置管理器

上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...

swoole中的worker_num和task_worker_num

swoole中的worker_num和task_worker_num

(1)swoole启动的主进程是master进程负责全局管理,然后master进程会再fork一个manager进程。(2)manager进程开始统一管理进程创建回收管理。(3)manager进程根据设置的worker_num和task_worker_num来创建work进程和task进程因此启动s...

php finally使用

php finally使用

<?php /**  * @throws Exception  */ function curl() {     throw  new \Exception('err...