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

Php 阻止我的脚本使用这么多内存?,php,session,memory,crash,Php,Session,Memory,Crash,我有一个脚本,它列出了数组中所有可能的排列,无可否认,它可能被用来代替单词列表。如果我能让它起作用,除非对尝试有限制,否则不可能最终不被击中 无论如何,这个脚本显然占用了大量的内存,这会使任何服务器起火。我需要的帮助是找到一种分散内存使用的方法,比如以某种方式重置脚本,并通过转到另一个文件或其他东西(可能通过使用会话)继续它停止的地方。我不知道 以下是到目前为止我得到的信息: <?php ini_set('memory_limit', '-1'); ini_set('max_execut

我有一个脚本,它列出了数组中所有可能的排列,无可否认,它可能被用来代替单词列表。如果我能让它起作用,除非对尝试有限制,否则不可能最终不被击中

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

以下是到目前为止我得到的信息:

<?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内存)

我知道你只是在重复排列,但也许你想用它做点别的?这要看情况而定

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


编辑:有时,在排列数组中使用引用会导致更大的内存使用。以防万一你没有尝试,检查哪一个更好,有或没有

我想我别无选择,只能这样做。我该如何取消设置变量?在执行此操作之前,请使用PhP
memory\u get\u usage
函数查看内存如何运行,何时开始增长等。然后尝试拆分文件中的排列,并检查内存使用情况有何变化。如果您看到了一个改进,那么在任何变量未使用时(或者至少是数组,或者数组的一部分,因为这些变量占用了大部分内存),请尝试取消设置任何变量,然后重新检查内存,等等,直到您无法做更多的操作。