我有超过 60% 的可用 RAM,但我无法运行一个简单的 php 文件

我有超过 60% 的可用 RAM,但我无法运行一个简单的 php 文件

.php我正在尝试在本地环境中运行一个简单的文件:
(Ubuntu 15.10 - Intel® Core™ i7-4600U CPU @ 2.10GHz × 4 - 64 位 - 8GB RAM)

截屏

所以你看到我有超过 60% 的可用 RAM,但我不知道为什么总是出现这个错误:

Erreur : Allowed memory size of 4244635648 bytes exhausted (tried to allocate 4294967674 bytes).

我尝试遵循此类似问题的解决方案:关联。但并没有解决我的问题。

谢谢

答案1

PHP 有一个设置可以限制单个脚本可以使用的内存量。如果超出该值,系统的总 RAM 量就无关紧要了。

如果您在控制台上运行,影响它的文件可能是 /etc/php5/cli/php.ini 并且有一行内容:

memory_limit = XXXXXXX

要完全消除限制,请将其更改为:

memory_limit = -1

但是,正如其他人所评论的那样,您的脚本已经尝试使用超过 4 GB 的 RAM。也许您应该重新考虑您正在做的事情,或者在代码中查找可能导致某种无限循环的错误。大多数 PHP 脚本(甚至是 CLI 脚本)即使对于最困难的任务也应该使用少于 256 MB 的空间。PHP 并非设计用于将 2 GB 的文件加载到内存中并在变量中对其进行处理,或将整个数据库转储到数组中。我合作过的许多程序员都犯过这种错误。相反,将存储放在最适合的地方 - 将其留在数据库中并逐行处理,或者将其留在文件系统上并执行相同操作。

如果这是一个 Web 脚本,而不是您在 CLI 上运行的脚本,您可能不想弄乱 memory_limit 设置,至少不要弄乱 4 GB 或更大的内存。对于为多个客户端提供服务的 Web 服务器来说,这不是一个好主意。

相关内容