Php 我的作品经常面临内存不足的问题
在我的生产服务器上,我经常遇到内存问题。apache错误日志经常记录此错误Php 我的作品经常面临内存不足的问题,php,laravel,apache,amazon-ec2,server,Php,Laravel,Apache,Amazon Ec2,Server,在我的生产服务器上,我经常遇到内存问题。apache错误日志经常记录此错误 856685.751702] Out of memory: Kill process 29946 (httpd) score 12 or sacrifice child [856685.757737] Killed process 29946 (httpd) total-vm:585720kB, anon-rss:25324kB, file-rss:0kB, shmem-rss:72kB 在Laravel日志文件中,我
856685.751702] Out of memory: Kill process 29946 (httpd) score 12 or sacrifice child
[856685.757737] Killed process 29946 (httpd) total-vm:585720kB, anon-rss:25324kB, file-rss:0kB, shmem-rss:72kB
在Laravel日志文件中,我经常记录此错误
[2021-01-29 07:10:45] local.ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Out of memory (allocated 14680064) (tried to allocate 1052672 bytes) in /var/www/html/instacutportal/vendor/guzzlehttp/psr7/src/Stream.php:228
Stack trace:
我有一些问题
请仔细查看错误消息:
在/var/www/html/instacutportal/vendor/guzzlehttp/psr7/src/Stream.php:228中内存不足(已分配1468064)(试图分配1052672字节)
PHP试图在文件/var/www/html/instacutportal/vendor/guzzlehttp/psr7/src/Stream.PHP的第228行分配1052672字节的内存,这超出了允许分配的范围
此文件是guzzle库的一部分。在应用程序的某个地方,您与guzzle的交互方式超过了PHP内存限制设置。错误中的完整堆栈跟踪应该包含发生错误的文件和行,但这可能与第二个问题有关。根据您上载图像的方式,它可能会在上载图像之前将图像全部加载到本地内存中
有几种方法可以解决这个问题
增加php内存限制设置
当您从用户提交中读取数据时,查看数据块
将ui更改为一次上载一个图像并完全处理这些图像
laravel进程将杀死您可以在此处检查的每个请求1。内存限制设置为256M,我认为这足够了。2.我不明白这一点,你能简单地给我解释一下吗?3.在图像上载过程中,用户可以选择多个图像,但不是每个图像都将同时上载。上载图像API将为每个图像调用,因此一次只处理一个图像。我还必须提到,在上传图像之前,我正在减小图像的大小,但这种大小调整过程发生在角度侧(FE侧),它会影响服务器吗?当用户上传文件时,laravel应用程序会将文件加载到内存中以便处理它。这意味着内存限制有效地限制了文件大小。分块上传图像可能是最好的解决方案。这意味着您的角度前端将需要处理图像,并将其分解为预定义大小的块/块,然后一次将每个块/块发送到服务器。然后服务器需要一次处理一个,并将它们附加到正在写入的文件中。在laravel和angular中,可能有第三方软件包可以提供帮助。分块是一种常见的做法,尤其是在处理视频文件时。值得在谷歌上搜索更多关于您正在使用的技术和用例的信息和想法。谢谢,詹姆斯,现在我明白您的意思了。您所谈论的概念类似于流和缓冲区概念。