网站首页linux

宝塔面板下PHP的一些异常反应处理

发布时间:2022-09-01 19:22:45编辑:slayer.hover阅读(75)

    服务器装了宝塔后搭配Lnmp环境, 操作简单了很多, 但是总有一些莫名其妙的问题不好解决.

    1.  使用phpoffice/phpspreadsheet做excel导出, 当导出的数据量比较大时, PHP直接扔出一句"Stack Overflower", 撂挑子罢工.
      修改各项配置内存使用大小等等, 仍然无动于衷, 没办法只好自己编译PHP8.1了, 导出的问题解决后, 然后就出现了第二个问题.

    2. 自己编译的PHP,在宝塔环境下, 隔一段时间就多出来一堆PHP-FPM进程, 这些多出来的进程在宝塔面板重启PHP时, 不会释放.

      久而久之, PHP-FPM进程把内存占满, CPU耗尽, 然后服务器宕机.
      查看宝塔日志, 会有这样的语句:

    系统日志  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

            保存后, 重启宝塔面板服务即可.

评论