如何在PHP(Laravel)中调试超时错误?

Gie*_*ius 12 php debugging timeout symfony laravel

我收到客户遇到的许多错误的报告

Symfony的\分量\调试\异常\ FatalErrorException

最大执行时间超过30秒

我,我自己,无法在我的本地机器上或生产服务器上复制它.这个网址遍布整个网站,因此,我猜它是全球性的,就像一个造成这种情况的中间件.

我使用Sentry.io来收集数据,但异常跟踪只有1个条目指向Symfony基本代码中的某个代码,最常见的是:

第73行的vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php

第45行的vendor/symfony/finder/Iterator/DateRangeFilterIterator.php

第69行的vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php

显然,似乎存在与文件系统相关的东西,但由于没有跟踪,我无法看到在站点代码中查找错误的位置.我猜它是某种无限循环或泄漏,但没有任何痕迹可以看,并没有一致的方法来重现问题.

我应该如何寻找问题并进行调试?

我可以设置任何设置,还是可以使用/启用的工具?

IlG*_*ala 5

阅读您的聊天对话后,我看到您正在使用此.env配置:

CACHE_DRIVER=file 
SESSION_DRIVER=file 
Run Code Online (Sandbox Code Playgroud)

我认为这是问题所在...我向自己解释得更好。

当您使用file驱动程序进行缓存或会话时,Laravel将创建大量文件来存储用户会话数据或应用程序缓存数据...

如果您的电子商务正在增长并产生大量流量,则由于框架必须扫描大量文件,因此性能可能会降低。

我认为这可能是两个可能的解决方案:

  • 您的生产环境必须升级(我不知道您的生产服务器规格或您是否有足够的资源)。
  • 对于您的应用程序需求,文件驱动程序变得太慢了。

我通常将redis用作缓存和会话驱动程序,它速度更快,并且具有“智能缓存”的良好策略,它是一个很好的工具。

我认为如果可能的话,您也应该尝试使用它。Memcached也可能是一个很好的解决方案。