php - 如何在 PHP (Laravel) 中调试 "Symfony\Component\Debug\Exception\FatalErrorException"错误?

标签 php laravel symfony debugging timeout

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

Symfony\Component\Debug\Exception\FatalErrorException

Maximum execution time of 30 seconds exceeded

我本人无法在本地机器或生产服务器上复制它。这个 URL 遍布整个网站,所以,我猜这是全局性的东西,比如导致这个的中间件。

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

vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php at line 73

vendor/symfony/finder/Iterator/DateRangeFilterIterator.php at line 45

vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php at line 69

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

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

是否有任何我可以设置的设置,或者我可以使用/启用的工具?

最佳答案

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

CACHE_DRIVER=file 
SESSION_DRIVER=file 

我认为这是问题所在......我解释得更好一些。

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

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

我认为可能有两种可能的解决方案:

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

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

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

关于php - 如何在 PHP (Laravel) 中调试 "Symfony\Component\Debug\Exception\FatalErrorException"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770917/

相关文章:

php - Jquery .hover 不工作

php - 如何在 Laravel 中解密哈希密码

php - 将简单的 Symfony 应用程序部署到 Azure : Slow?

php - Laravel 5 时差

php - Laravel - whereHas 最后一个关系是 = 'manual'

php - 如何根据值查询相关实体

php - Twig 显示额外字段

PHP ereg 与 preg

mysqli - PHP 错误 : "Call to undefined function mysqli_connect()"

php - 针对 MySQL DATETIME 戳的时间比较检查