Laravel中允许的内存大小为536870912字节

Jul*_*oro 30 laravel

在同一个系统中,我可以调用db,并且没有问题,但在某些情况下(使用最大的表),我得到了

"  SELECT partidascapturainfo.* FROM partidascapturainfo    WHERE partidascapturainfo.partidascapturainfoid IS NOT NULL       ORDER BY partidascapturainfoid asc   LIMIT  0 , 10 "
Run Code Online (Sandbox Code Playgroud)

我调试了代码,问题是一个基本的查询:

123044,42016,249,3762,2,,0
123045,42016,249,3761,2,,0
123046,42016,249,3764,1,,0
123047,42016,249,3765,,,0
123048,42016,249,3775,,,0
123049,42016,249,3771,3,,0
123050,42016,249,3772,3,,0
123051,42016,250,3844,HAY,,0
123052,42016,255,3852,,,0
123053,42017,249,3761,1,,0
Run Code Online (Sandbox Code Playgroud)

当我在Mysql客户端中运行查询时,查询运行在0.17s

我已经将memory_limit设置为2048,重新启动nginx并且我的查询只返回10行...

这是我的10行:

"  SELECT partidascapturainfo.* FROM partidascapturainfo    WHERE partidascapturainfo.partidascapturainfoid IS NOT NULL       ORDER BY partidascapturainfoid asc   LIMIT  0 , 10 "
Run Code Online (Sandbox Code Playgroud)

有什么想法发生了什么?

Dec*_*ple 41

您可以尝试编辑/etc/php5/fpm/php.ini:

; Old Limit
; memory_limit = 512M

; New Limit
memory_limit = 2048M
Run Code Online (Sandbox Code Playgroud)

您可能需要重新启动nginx

你也可能在某个地方有一个无限循环.你可以发布你正在拨打的代码吗?


Yev*_*yev 18

当我运行一堆unitests时,在php-7上发生了laravel 5.1.

解决方案是 - 在php.ini中更改memory_limit但它应该是正确的.所以你需要一个负责服务器的人,位于那里:

/etc/php/7.0/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

所以你需要一条线

 memory_limit
Run Code Online (Sandbox Code Playgroud)

之后你需要重启php服务

sudo service php7.0-fpm restart
Run Code Online (Sandbox Code Playgroud)

检查它是否已成功更改我使用命令行来运行:

 php -i
Run Code Online (Sandbox Code Playgroud)

该报告包含以下内容

memory_limit => 2048M => 2048M
Run Code Online (Sandbox Code Playgroud)

现在测试用例很好.


Dar*_*phy 10

编辑以下两个文件(您可能只有其中一个):

sudo nano /etc/php/7.3/fpm/php.ini

sudo nano /etc/php/7.3/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

更改内存限制,例如从 512M 更改为 1024M:

memory_limit = 1024M
Run Code Online (Sandbox Code Playgroud)

重启nginx:

sudo systemctl restart nginx
Run Code Online (Sandbox Code Playgroud)

检查内存限制

php -i | grep "memory_limit"
Run Code Online (Sandbox Code Playgroud)

运行您的软件以检查新的内存限制是否足够。

如果没有,请再次增加(并重复上述步骤)。以2048M为例:

memory_limit = 2048M
Run Code Online (Sandbox Code Playgroud)