防止我的脚本使用这么多内存?

时间:2013-08-23 22:46:53

标签: php session memory crash

我有一个脚本列出了数组中所有可能的排列,诚然,可以使用这些排列而不是单词列表。如果我让它发挥作用,除非对尝试有限制,否则最终不可能获得命中。

无论如何,脚本显然占用了大量的内存,这将使任何服务器着火。我需要帮助的是找到一种方法来分散内存使用情况,例如以某种方式重置脚本并通过转到另一个文件或其他东西继续它停止的地方,可能通过使用Sessions。我不知道。

这是我到目前为止所得到的:

<?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

1 个答案:

答案 0 :(得分:0)

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

我看到你只是回应了排列,但也许你想用它来做其他事情?所以它取决于某种程度。

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

编辑:有时,使用您对排列数组执行的引用可能会导致更多的内存使用。如果您没有尝试,请检查哪个更好,有或没有