我有一个问题是增加PHP作为Apache模块的内存限制。
如果我在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物理RAM。
答案 0 :(得分:42)
您是否尝试过以MB为单位的值?
php_value memory_limit 2048M
还可以在php.ini
而非 Apache 中尝试编辑此值。
答案 1 :(得分:34)
我建议你在错误的视线中看问题。任务应该是'我正在做什么,需要使用Php通过apache模块进行apache进程内的2G内存,这个工具集最适合这个工作吗?'
是的,你可以将火箭绑在福特针脚上,但它可能不是正确的解决方案。
无论如何,如果你真的需要它,我会提供火箭......你可以添加到脚本的顶部。
ini_set('memory_limit','2048M');
这将仅为脚本设置它。你仍然需要告诉apache为PHP脚本提供那么多(我认为)。
答案 2 :(得分:17)
对于-1
变量中的无限内存限制集memory_limit
:
ini_set('memory_limit', '-1');
答案 3 :(得分:3)
您应该在支持64位操作系统,64位Apache版本的硬件上使用64位操作系统,而对于PHP则相同。但这并不能保证使用PDF的函数可以使用如此大的内存。您最好不要将整个文件加载到内存中,将其拆分为块或使用文件函数进行搜索而不加载到RAM中。
答案 4 :(得分:2)
对于遇到相同问题的其他人,这里是php + patch中的错误描述 https://bugs.php.net/bug.php?id=44522
答案 5 :(得分:1)
在Apache配置中输入以下内容:
php_value memory_limit 2048M
答案 6 :(得分:0)
您也可以尝试以下方法:
ini_set("max_execution_time", "-1");
ini_set("memory_limit", "-1");
ignore_user_abort(true);
set_time_limit(0);
答案 7 :(得分:0)
即使设置了ini_set("memory_limit", "-1");
,我在命令行php上也遇到了同样的问题,所以限制在php中而不是来自Apache。
您应该检查您是否正在使用64位版本的php。
看看有关Checking if code is running on 64-bit PHP的问题,以了解您使用的是什么php。
我认为您的php是32位编译的。