2012-08-09 66 views
40

我有一个问题增加PHP的内存限制为Apache模块。如何增加超过2GB的PHP内存限制?

如果我把下面的指令在Apache配置,这项工作确定:

php_value memory_limit 1.99G 

但超过2GB不工作,这是恢复该值回128MB。

这里有什么问题?我需要更多内存来处理一些PDF相关任务。

服务器是Debian 2.6.32-5-amd64#1 SMP,PHP 5.3.3-7 + squeeze13带有12GB物理内存。

+7

2G Apache进程!哇。 – Ray 2012-08-09 14:05:01

+0

也许你应该把apache配置作为默认配置,并且'ini_set('memory_limit',-1);'只在你需要的文件上。看看是否有效。 – JRomero 2012-08-09 14:07:52

+0

使用MB代替GB不会改变任何内容。我有一些其他的限制,也许在Apache配置的某处。另外,据我所知memory_limit不能在运行时更改,默认值是128MB。也许我可以在主php.ini中设置,但我不希望其他VHOST有这么大的设置,所以我使用它每个VHOST。 – mikikg 2012-08-09 14:12:43

回答

32

您是否尝试过使用MB的价值?

php_value memory_limit 2048M 

也可以尝试在php.ini阿帕奇编辑这个值

+1

是的,它必须在php.ini。出于某种原因,在apache配置中不能工作在2G以上(工作时没有其他较低值的问题)。 – mikikg 2012-08-13 21:34:41

+0

嗨......实际上我使用的是zend,所以如何使用zend的内存 – 2013-10-05 11:32:06

+0

这是说,如果你有足够的内存可用,那么PHP可以消耗多少内存几乎没有限制? – dotslash 2015-11-22 07:14:39

1

输入以下到Apache的配置:

php_value memory_limit 2048M 
3

您应该在支持64位操作系统,64位Apache版本和PHP相同的硬件上安装64位操作系统。但是这并不能保证使用PDF的函数可以使用如此大的内存。你最好不要将整个文件加载到内存中,将它拆分成块或使用文件函数来查找它,而不加载到RAM中。

+0

它已经是64位了: Linux myHOST 2.6.32-5-amd64#1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64 GNU/Linux – mikikg 2012-08-09 14:14:25

+0

Apache怎么样? – Timur 2012-08-09 15:07:33

+0

Apache是​​来自Debian的股票版本2.2.16-6 + squeeze7。我认为这是64位编译。 – mikikg 2012-08-09 15:26:33

26

我建议你在错误的光线下看问题。这个任务应该是'我在做什么需要2G内存在apache进程中通过apache模块使用Php,并且这个工具是否适合这项工作?

是的,你可以将一枚火箭绑在福特平托上,但它可能不是正确的解决方案。不管怎样,如果你真的需要它,我会提供火箭......你可以添加到脚本的顶部。

ini_set('memory_limit','2048M'); 

这将只为脚本设置它。你仍然需要告诉apache允许这么多的php脚本(我认为)。

+1

我知道,脚本不是我的,它是一些html2pdf转换器,并输入到它非常大的HTML页面。 – mikikg 2012-08-09 14:16:53

+0

@mikikg看到上面的答案 – Ray 2012-08-09 14:31:08

+0

正确的解决方案和正确的解释!我碰到了只有一个脚本的内存限制,我的站点地图索引了太多的页面(存储在数据库中)。完美的解决方案,网站地图有很高的内存限制,其他一切都保持不变。 – HoldOffHunger 2017-07-08 01:13:00

12

对于无限的内存限制的描述memory_limit变量设置-1

ini_set('memory_limit', '-1'); 
+1

很高兴知道无限的内存是可能的,但是,我不认为我很快就会在代码中使用它。 =) – HoldOffHunger 2017-07-08 01:15:14