Превышено максимальное время выполнения (PHP) - PullRequest
0 голосов
/ 31 июля 2010

я получаю эту ошибку, и я не знаю почему.

Fatal error: Maximum execution time of 30 seconds exceeded in E:\web\autoopti\thanks.php on line 65

Код, который у меня есть для сценария PHP:

<?php
    $key = 129;

    $email = $_REQUEST["payer_email"];
    $first = $_REQUEST["first_name"];
    $last = $_REQUEST["last_name"];
    $acode = $_REQUEST["hash"];

    $txt = $email . "|" . $email . "|" . $first . "|" . $last . "|" . $acode;
    $outtxt = '';

    for($i=0;$i<strlen($txt);)
    {
        for($j=o;$j<strlen($key);$j++,$i++)
        {
            $outtxt .= $txt{$i} ^ $key{$j};
        }
    }

    echo "thanks";
?>

И строка сообщения об ошибкессылается на это:

$outtxt .= $txt{$i} ^ $key{$j};

Итак, я предполагаю, что эта строка кода слишком долго выполняет свою работу.Может кто-нибудь помочь мне исправить это?

Спасибо

Ответы [ 5 ]

5 голосов
/ 31 июля 2010

У вас есть бесконечный цикл.$j начинается с o (который преобразуется в 'o', поскольку здесь нет o константы), а не с 0, и:

$j = 'o';
$j++;

приводит к $ j = 'p' (дажехотя 'o' + 1 равно 1 ...)

Это продолжается, когда $ j в конечном итоге переходит от 'z' к 'aa'.Любая нечисловая строка - это < любое число, поэтому внутренний цикл бесконечен.

Я не совсем уверен, в чем смысл сценария.Но похоже, что вы пытаетесь сделать какое-то домашнее шифрование или хэширование, что часто является ошибкой.Взгляните на mcrypt и hash .

РЕДАКТИРОВАТЬ: Мой первоначальный ответ был неправильным о причине бесконечного цикла.

1 голос
/ 31 июля 2010

Проверьте это, это обязательно сработает

0 голосов
/ 31 июля 2010
<?php
$key = 129;

$email = $_REQUEST["payer_email"];
$first = $_REQUEST["first_name"];
$last = $_REQUEST["last_name"];
$acode = $_REQUEST["hash"];

$txt = $email . "|" . $email . "|" . $first . "|" . $last . "|" . $acode;
$outtxt = '';

for($i=0;$i<strlen($txt);)
{
    for($j=0;$j<strlen($key);$j++,$i++)
    {
        $outtxt .=  ( $txt{ $i } ^ $key{$j} ) ;
    }
}

echo "thanks";
?>

Посмотрите, исправлена ​​ли эта ошибка, или прокомментируйте меня

0 голосов
/ 31 июля 2010

Используйте set_time_limit(0), если хотите продолжить работу с кодом, который будет игнорировать любые настройки тайм-аута в php.ini.

0 голосов
/ 31 июля 2010

Здесь нечего удивляться.Ваш код занимает слишком много времени для запуска.Вы можете увеличить ограничение времени ожидания в ваших конфигурационных файлах PHP.Однако я бы порекомендовал вам использовать интерпретатор PHP командной строки, чтобы увидеть, где ваша программа берет все эти 30 секунд, а затем выяснить, как его оптимизировать.

...