网站首页linux
宝塔面板下PHP的一些异常反应处理
发布时间:2022-09-01 19:22:45编辑:slayer.hover阅读(238)
使用phpoffice/phpspreadsheet做excel导出, 当导出的数据量比较大时, PHP直接扔出一句"Stack Overflower", 撂挑子罢工.
修改各项配置内存使用大小等等, 仍然无动于衷, 没办法只好自己编译PHP8.1了, 导出的问题解决后, 然后就出现了第二个问题.自己编译的PHP,在宝塔环境下, 隔一段时间就多出来一堆PHP-FPM进程, 这些多出来的进程在宝塔面板重启PHP时, 不会释放.
久而久之, PHP-FPM进程把内存占满, CPU耗尽, 然后服务器宕机.
查看宝塔日志, 会有这样的语句:
服务器装了宝塔后搭配Lnmp环境, 操作简单了很多, 但是总有一些莫名其妙的问题不好解决.
系统日志 PHP守护程序 检测到PHP-81处理异常,已自动修复!
果然是宝塔发现了这个PHP进程不是自己的, 然后就不断的启动新的PHP-FPM进程.
对症下药, 在宝塔的脚本/www/server/panel/task.py里, 找到check502Task这个方法,
def check502(): try: phpversions = public.get_php_versions() for version in phpversions: if version in ['52','5.2']: continue php_path = '/www/server/php/' + version + '/sbin/php-fpm' if not os.path.exists(php_path): continue if checkPHPVersion(version): continue if startPHPVersion(version): public.WriteLog('PHP守护程序', '检测到PHP-' + version + '处理异常,已自动修复!', not_web=True) except Exception as ex: logging.info(ex)
不让它来检测我们新编译的PHP就好了, 修改第五行如下:
if version in ['52','5.2','81','8.1']: continue
保存后, 重启宝塔面板服务即可.
评论