防止我的脚本占用太多内存


Prevent my script from using so much memory?

我有一个脚本,它列出了数组中所有可能的排列,诚然,可以使用它来代替单词列表。如果我能做到这一点,除非尝试次数有限制,否则最终不可能不被击中。

无论如何,这个脚本显然占用了大量的内存,这会点燃任何服务器。我需要帮助的是找到一种分散内存使用的方法,比如以某种方式重置脚本,并通过转到另一个文件或其他文件(可能是使用会话)继续它停止的地方。我不知道。

到目前为止,我得到的是:

<?php 
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '0');
$possible = "abcdefghi";
$input = "$possible";
function string_getpermutations($prefix, $characters, &$permutations)
{
    if (count($characters) == 1)
        $permutations[] = $prefix . array_pop($characters);
    else
    {
        for ($i = 0; $i < count($characters); $i++)
        {
            $tmp = $characters;
            unset($tmp[$i]);
            string_getpermutations($prefix . $characters[$i], array_values($tmp), $permutations);
        }
    }
}
$characters = array();
for ($i = 0; $i < strlen($input); $i++)
    $characters[] = $input[$i];
$permutations = array();
print_r($characters);
string_getpermutations("", $characters, $permutations);
print_r($permutations);
?>

有什么想法吗?:3

您可以每隔XXX个排列将排列存储在文件中,然后在需要时按正确顺序重新打开文件以显示/使用排列。(文件或任何你想要的,只要你能释放PhP内存)

我看到你只是在重复排列,但也许你想用它做其他事情?所以这取决于某种程度。

此外,在进行排列时,尽可能多地取消设置未使用的变量。

编辑:有时,像对排列数组那样使用引用会导致更大的内存使用率。万一你没有尝试,检查一下有没有哪个更好