超出最大执行时间(PHP)

时间:2010-07-31 04:42:40

标签: php xor

我得到这个错误,我不知道为什么。

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 个答案:

答案 0 :(得分:5)

你有一个无限循环。 $j从o开始(由于没有o常量而转换为'o',而不是0),并且:

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

导致$ j ='p'(即使'o' + 1为1 ...)

继续$ j最终从'z'变为'aa'。任何非数字字符串都是<任意数字,因此内部循环是无限的。

我不确定剧本的重点是什么。但看起来你正在尝试做一些本土加密或散列,这通常是一个错误。请改为mcrypthash

编辑:我最初的答案是关于无限循环的原因是错误的。

答案 1 :(得分:1)

检查一下它肯定会起作用

答案 2 :(得分: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";
?>

请查看这是错误修正或评论我

答案 3 :(得分:-1)

这里没什么好奇的。您的代码运行时间太长。您可以增加PHP配置文件中的超时限制。但是我建议您使用命令行PHP解释器来查看程序在30秒内所占用的位置,然后找出如何优化它。

答案 4 :(得分:-1)

如果您想继续使用代码,请忽略php.ini中的任何超时设置,请使用set_time_limit(0)