【发布时间】:2016-05-12 06:36:50
【问题描述】:
我在 DigitalOcean 上有一个 droplet,它是一个 1GB 内存的 10 美元包,然后我升级到 20 美元包。
所以这一切是如何开始的,我试图使用 cURL 参数将文件从一台服务器上传到另一台服务器,现在问题是......文件没有发送,因为我收到了这个漂亮的错误。
PHP Fatal error: Out of memory (allocated 1707606016) (tried to allocate 426680697 bytes)
现在我将memory_limit 设置为 2048MB,因为这是我在 VPS 上获得的内存量。现在在升级之前,我只有 1024MB 的内存,而且当时的错误信息不一样,这就是我得到的。
PHP Fatal error: Out of memory (allocated 530055168) (tried to allocate 529639729 bytes)
我的 VPS 有足够的内存来上传一个 403MB 的文件,而且我的 memory_limit 已达到最大值,我没有办法升级服务器的内存限制。
memory_limit = 2048M
file_uploads = On
upload_max_filesize = 5000M
max_file_uploads = 20
allow_url_fopen = On
post_max_size = 0
max_execution_time = 90000
max_input_time = 90000
显然它可能看起来像重复,但我看过的所有帖子的解决方案不对我有用。具有 memory_limit 的脚本实际上是一个处理从备用服务器发送的 cURL 请求的处理程序。
【问题讨论】:
-
太糟糕了,该帖子上的解决方案也不起作用。
-
这里的问题是您有 2GB 可用空间,但 1.7GB 已分配,因此 426MB 确实不够(超过 2GB)
-
通过 cURL 发送一个文件并使用 file_put_contents 怎么会占用超过 2GB 的空间?特别是如果文件是 400mb
-
您好,您可以发布您用于上传文件的代码吗?我想知道它是否是内存泄漏的问题?