Laravel内存异常'数据库/ Connection.php:301'

时间:2015-03-11 01:24:31

标签: php mysql laravel laravel-4 eloquent

我在这里遇到了一个奇怪的错误,有时候选择查询会从内存异常中消失。这里最大的问题是我自己从来没有能够看到错误。我知道它存在于用户和laravel.log文件中,其中包含以下内容:

[2015-03-05 11:46:07] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Allowed memory size of 134217728 bytes exhausted (tried to allocate 196605 bytes)' in [...]/vendor/laravel/framework/src/Illuminate/Database/Connection.php:301
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleShutdown()
#1 {main} [] []

我的问题是:

  • 如何调试问题(找到什么是破坏一切的查询)
  • 或者,如果有一个已知的解决方法,它是什么?

我已在DB::disableQueryLog();

中尝试start/artisan.php

2 个答案:

答案 0 :(得分:1)

主要问题是:

PHP进程内存不足,即点击 php.ini 中设置的memory_limit。原因可能是各种各样的,即无限循环,大选择陈述;所以说:任何需要PHP在处理过程中将信息存储在内存中的东西。

我的具体问题&溶液

由于长时间运行的php进程,即队列工作者,我遇到了这个问题。

通过设置一个每20分钟php artisan queue:restart的一个cron作业来解决它。

答案 1 :(得分:0)

正如错误消息所述,错误是关于某个数据库查询。但我也问如何我可以追溯错误的查询。我使用了一个名为Rollbar的错误跟踪服务来查找哪个API调用已死亡。很确定它不是最好的方式来解决这个问题,但它确实有效......