PrestaShop 1.7.6.5 backoffice加载超时 TraceableFirewallListener执行异常
PrestaShop 1.7.6.5 后台加载超时问题排查修复
问题匹配特征
你遇到的以下表现和1.7.6.5版本的已知缺陷完全吻合:
- Advanced Parameters板块下的Information页面完全无法正常加载,持续请求后触发超时
- 调试模式下显示
TraceableFirewallListener节点耗时占比极高 - 手动修改
classes/tools.php中的addonsRequest方法为直接返回false,没有任何性能改善
根因说明
TraceableFirewallListener本身的权限、路由校验逻辑不存在性能缺陷,耗时完全来自该监听器触发的同步远程请求分支:
- 该分支的addons校验逻辑是硬编码在监听器内部的curl请求,和你修改的
Tools::addonsRequest方法不属于同一个代码调用链路,你把该方法直接改成返回false的调整,根本没有触达实际阻塞的执行点,所以不会有任何性能改善 - 默认配置下,后台防火墙加载规则时会同步向官方addons服务发起3次以上的元数据校验请求,每次请求默认超时阈值为5s,一旦当前服务器到addons域名的连通性异常,累计的等待时间就会触发页面整体加载超时
分步修复操作
- 调整addons请求超时阈值
在项目根目录的config/defines.inc.php文件末尾追加常量定义,把默认5s的请求超时压缩到1s,即使请求失败也不会长时间阻塞页面:define('__PS_ADDONS_TIMEOUT__', 1); - 关闭所有触发远程校验的后台开关
进入后台的Advanced Parameters > Administration配置页,把两个选项设置为关闭:- 自动检查模块更新
- 在高级参数页面检查PrestaShop新版本
这两个开关对应的独立请求逻辑,是触发Information页面加载时阻塞的核心源头,和你之前修改的tools类代码没有关联
- 清空生产环境缓存
删除var/cache/prod目录下的全部缓存文件,重启PHP进程,避免旧的路由缓存把监听器逻辑绑定到失效的远程调用分支上
验证方法
- 重新打开调试模式加载Information页面,
TraceableFirewallListener的耗时会回落至正常范围(通常低于100ms) - 服务器即使完全无法访问外网addons域名,页面也可以正常加载不会超时
内容的提问来源于stack exchange,提问作者Ciprian
相关产品推荐
相关产品推荐

