【问题标题】:Does the PHP Built-in Webserver have a memory limit?PHP 内置网络服务器有内存限制吗?
【发布时间】:2016-07-02 03:23:36
【问题描述】:

我使用“PHP 内置 Web 服务器”配置在 PhpStorm 中本地托管 PHP 脚本。一个脚本需要很多内存,所以我在它的开头添加了ini_set('memory_limit', 8589934592); # 8GiB(设置它有效,我用ini_get('memory_limit')检查它)。

但是当我请求引用 url 时,脚本的执行失败并在错误日志中显示以下错误消息:

PHP Fatal error: Out of memory (allocated 1793064960) (tried to allocate 8334 bytes) in ...

它只能分配大约 1.7GiB。

有人知道,为什么会这样吗?我假设 PHP 内置网络服务器有内存限制,但我找不到任何相关信息。


PS:我使用的是 PHP v5.6、Windows 8 和 PhpStorm 10.0.3


编辑: 我的电脑有大约 10Gib 的可用 RAM 可供使用

【问题讨论】:

  • 非常有趣的问题 - 我很想看到一个经过验证的答案。根据您的观察(和测试),我猜答案是响亮的“是的,并且没有很好的记录”......
  • 我认为更好的选择是在php.ini 级别进行配置,对于您的情况,您应该寻找php.ini for your cli。在我的ubuntu上位于/etc/php5/cli/php.ini,你得找mac。
  • 除了我的问题现在似乎已经解决了,我不想更改php.ini 中的'memory_limit',因为默认情况下不应该允许这么高的内存使用。这是这个单一脚本的一个例外。

标签: php phpstorm php-builtin-server


【解决方案1】:

您是否以 32 位运行网络服务器?如果是这样,它可能只允许使用最大值。 2 GB: How much memory can a 32 bit process access on a 64 bit operating system?

我认为您可以使用 PHP_INT_SIZE 常量检查这一点: Checking if your code is running on 64-bit PHP

【讨论】:

  • 哇,好像是这样!没想到。是的,我的 PHP 运行在 32 位
猜你喜欢
  • 2016-01-13
  • 2012-10-08
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 2016-09-25
  • 2014-07-16
  • 2013-01-29
相关资源
最近更新 更多