PHP内存大小问题

时间:2015-07-14 03:45:17

标签: php algorithm

您好我需要为我的幻想名单分析大约50,063,860种组合。这是60顺位6。

我正在尝试生成将names数组传递给Math_Combinatorics珍珠库的所有可能组合:

$ n是一个包含60个元素的数组,

$result = $combinatorics->combinations( $n, 6);

致命错误:第126行的/usr/share/php/Math/Combinatorics.php中允许的内存大小为2147483648个字节(试图分配72个字节)

无论如何都要分配更多的内存或者一次输入更少的条目,这样它就不会崩溃了吗?

2 个答案:

答案 0 :(得分:1)

您可以增加php.ini中的memory_limit。来自php docs

  

这设置允许脚本分配的最大内存量(以字节为单位)。这有助于防止编写糟糕的脚本占用服务器上的所有可用内存。请注意,要没有内存限制,请将此指令设置为-1。

您还可以使用ini_set()函数在脚本中内联设置此值,甚至可以使用php_value指令在apache虚拟主机配置中设置此值。

话虽如此,你可能有必要重构你的代码,以免所有的排列都需要同时存在于内存中,从而大大减少程序的内存占用。

答案 1 :(得分:1)

您可以使用ini_set('memory_limit', '-1');跳过此错误。这将覆盖默认方法。

PHP allocated Memory Size

但是请注意,这是不是更好的解决方案Check this out as well

Allowed memory size of 33554432 bytes exhausted

可能重复