Laravel 报告内存大小 268MB 耗尽但 php.ini 说 512MB

Posted

技术标签:

【中文标题】Laravel 报告内存大小 268MB 耗尽但 php.ini 说 512MB【英文标题】:Laravel reporting memory size 268MB exhausted but php.ini says 512MB 【发布时间】:2018-02-01 04:42:51 【问题描述】:

Laravel 作业侦听器正在运行超过 10 万条记录,并给出错误

php Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 1179648 bytes) in .../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php on line 184


[Symfony\Component\Debug\Exception\FatalErrorException]                             
 Allowed memory size of 268435456 bytes exhausted (tried to allocate 1179648 bytes)  

我已经使用 phpinfo() 证明了 memory_limit = 512M,所以我不知道当 512 > 268 时会发生什么:) - 还有 belongsTo 关系与它有什么关系?

【问题讨论】:

Allowed memory size of 536870912 bytes exhausted in Laravel的可能重复 【参考方案1】:

您提到 Laravel 作业侦听器,这让我假设您通过命令行运行它。 php.ini 用于命令行执行可能与 Web 服务器加载的内容不同。请确保memory_limit 值对于两个php.ini 相同。要从 shell(假设是 Linux)中找到命令行的 php.ini,请运行

$ php -i | grep php\.ini

【讨论】:

看来这可能是欺骗我的答案 - 我在 /etc/ 找到了命令行 php.ini,所以如果我改变它,我只需要重新加载 php 吗?还是整个服务器? 哦,因为它是作业监听器——我只需要重新启动监听器就可以让 php.ini 生效? AFAIK, php.ini 每次通过命令行运行 php 时都会被读取。是的。您需要重新启动作业侦听器。

以上是关于Laravel 报告内存大小 268MB 耗尽但 php.ini 说 512MB的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 在简单的数据库查询内存泄漏/“允许的内存大小为 .. 字节耗尽”之后 [重复]

使用 php://input 耗尽内存

PHP允许的内存大小耗尽但尝试分配的内存更少

Laravel CSV 导入内存不足(允许内存耗尽)

HDFS解决小文件

安卓内存分配