LNMP服务器或宝塔(Nginx fastCGI)下WeLive自动断线问题的处理办法

weenfier 5 Months+ 245

由于Nginx服务器是使用fastCGI模式运行PHP,所以需要设置其配置文件php-fpm.conf,将其中的 request_terminate_timeout 配置项改大,如:


request_terminate_timeout = 9999999999


原因:

PHP配置文件中有 max_execution_time (脚本最大执行时间)的设置,来防止PHP脚本发生运行超时的问题。WeLive客服中有一个PHP进程监听着Socket端口,这个进程是常驻内存的(一直在运行中),同时监听所有客服和访客的所有Websocket通讯信息。这个进程监听了所有的交互信息,所以说WeLive是极速、高效的。


WeLive在代码中规避了max_execution_time 的限制,所以这个Socket监听进程可以常驻内存。但是,由于Nginx服务器使用fastCGI模式加载PHP,且又在其加载配置文件php-fpm.conf中多了一个request_terminate_timeout 设置项,此项设置与PHP配置文件中有 max_execution_time (脚本最大执行时间)有相现似之处。


WeLive中的PHP代码无法初始化fastCGI的 request_terminate_timeout 配置项,所以导致WeLive常驻内存的socket监听进程在一定时间内中断,这就是自动断线的原因。

New Post (0)
Back
Create New Thread