强制连接关闭灯tpd



输出发送到客户端后,我需要在后台运行代码一段时间
但是连接会阻塞,在作业完成之前不会关闭。

查看位置:
 如何尽早关闭连接
;https://www.php.net/manual/en/features.connection-handling.php#71172
(以及其他相关答案(

我最终得到了代码:

// credit : https://stackoverflow.com/questions/138374/how-do-i-close-a-connection-early#141026
//          and related sources
// broken on : lighttpd/1.4.53 - php/7.1.3
$size=ob_get_length();
header("Content-Length: $size",1);
header("Connection: close",1);
header("Content-Encoding: nonern");
// flush all output
ob_end_flush();
ob_flush();
flush();
ob_end_clean();
// if you're using sessions, this prevents subsequent requests
// from hanging while the background process executes
if (session_id()) session_write_close();
... some code for 10 seconds here

我两种都试过了:
 nbsp nbsp;server.max保持活动空闲=0
 nbsp nbsp;server.max-keep-alive-requests=0
取自:
 nbsp nbsp;lighttpd强制关闭连接
 nbsp nbsp;https://serverfault.com/questions/283377/force-connection-close-lighttpd
(放在/etc/lighttpd/lighttpd.conf中(

我的设置:
 nbsp nbsp;lighttpd/1.4.53
 nbsp php/7.1.3
 nbsp nbsp;Firefox 68.6.0esr(32位(
nbsp nbsp 树莓派4 nbsp 树莓
 nbsp nbsp;uname-a:Linux raspberrrypi 4.19.97-v7l+#1294 SMP 1月30日星期四13:21:14 GMT 2020 armv7l GNU/Linux

启用lighttpd模块:
nbsp nbsp 10 accesslog.conf
 nbsp nbsp;10 fastcgi.conf
 nbsp nbsp;10 rewrite.conf
 nbsp nbsp;15 fastcgi-php.conf
 nbsp nbsp;90 javascript别名.conf

用途:
;这是一个简单的MUD游戏代码
;它可以每秒刷新AI一次
;它是由玩家在游戏中的出现周期性地开始的,如下所示:
 
;1] 脚本将处理玩家的命令,
 nbsp nbsp;则应关闭连接以避免打扰玩家的浏览器
nbsp;2] 检查锁定文件,如果它是免费的-锁定它
 3] 然后在后台进行10次更新
nbsp nbsp 之后,文件被解锁,
 nbsp nbsp;因此另一个玩家的命令可以启动另一个bg作业

如果您的代码在发送CGI响应后需要进行处理,那么

代码发送CGI响应后运行代码的一种方法是在发送CGI响应之后在后台运行代码。看见https://www.php.net/manual/en/function.posix-setsid.php

另一种方法是让CGI将作业放入作业队列,并有一个独立的守护进程,与CGI分开,处理队列,例如使用redis服务器。

相关内容

  • 没有找到相关文章

最新更新