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