2010-07-31 4 views
0

im получение этой ошибки, и я не знаю почему.Максимальное время выполнения превышено (PHP)

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}; 

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

Спасибо

+0

Нету. эта линия работает очень быстро. –

+0

Для меня требуется более 30 секунд. Что вы предлагаете, проблема? – 2010-07-31 04:50:12

+0

Является ли $ j = 0 или o? (ноль или 'oh')? – Hans

ответ

5

У вас бесконечный цикл. $j начинается в точке О (который превращается в «о», так как нет o постоянной), а не 0, а также:

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

результаты в $ J = «р» (даже если 'o' + 1 1 .. .)

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

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

EDIT: Мой первоначальный ответ был неправильным о причине бесконечного цикла.

+0

+1 Ты прав, это был «просто» бесконечный внутренний цикл. Я также смиренно утверждаю, что ОП будет лучше использовать заранее подготовленное решение для того, что он пытается. – deceze

+0

He * * * упоминает, что это был сценарий с сайта. Является ли это хорошей идеей или нет, вызывает сомнение. –

-1

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

+0

Я использую Winhost для размещения моего php, однако у них нет никаких параметров/config/или что-либо, что позволяет мне делать php-файлы. Так что в основном то, что я получаю, это то, что я получаю без изменений! – 2010-07-31 04:51:38

+0

И да, я знаю об иронии :) – 2010-07-31 04:52:05

+0

просто установите время в вашем скрипте, на самом верху: set_time_limit (60); // или 0 для «off» (не рекомендуется) – Hans

-1

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

+0

Лучше узнать, почему что-то превышает лимит времени. –

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

Вы должны указать, что вы изменили, а также почему. –

1

Проверьте это будет, конечно, работать

Смежные вопросы