简体   繁体   English

PHP致命错误:超过了最大执行时间

[英]PHP Fatal Error: Maximum execution time exceeded

I have this problem: this script checks the pagerank of a certain list on links. 我有这个问题:这个脚本检查链接上某个列表的pagerank。 When I insert ~150 links it works perfectly but if I put a great number of links it shows me the following error: 当我插入〜150个链接时,它可以正常工作,但是如果我放置大量链接,则会显示以下错误:

在此处输入图片说明

This is the code: 这是代码:

<?php
    error_reporting(E_ALL & ~E_NOTICE);
    function StrToNum($Str, $Check, $Magic)
    {
        $Int32Unit = 4294967296;  // 2^32

        $length = strlen($Str);
        for ($i = 0; $i < $length; $i++) {
            $Check *= $Magic;     
            if ($Check >= $Int32Unit) {
                $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));

                $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
            }
            $Check += ord($Str{$i}); 
        }
        return $Check;
    }
    function CheckHash($Hashnum)
    {
        $CheckByte = 0;
        $Flag = 0;

        $HashStr = sprintf('%u', $Hashnum) ;
        $length = strlen($HashStr);

        for ($i = $length - 1;  $i >= 0;  $i --) {
            $Re = $HashStr{$i};
            if (1 === ($Flag % 2)) {              
                $Re += $Re;     
                $Re = (int)($Re / 10) + ($Re % 10);
            }
            $CheckByte += $Re;
            $Flag ++;    
        }

        $CheckByte %= 10;
        if (0 !== $CheckByte) {
            $CheckByte = 10 - $CheckByte;
            if (1 === ($Flag % 2) ) {
                if (1 === ($CheckByte % 2)) {
                    $CheckByte += 9;
                }
                $CheckByte >>= 1;
            }
        }

        return '7'.$CheckByte.$HashStr;
    }
    function HashURL($String)
    {
        $Check1 = StrToNum($String, 0x1505, 0x21);
        $Check2 = StrToNum($String, 0, 0x1003F);

        $Check1 >>= 2;     
        $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
        $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
        $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);    

        $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
        $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

        return ($T1 | $T2);
    }
    function getpagerank($url) {
        $query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)). "&features=Rank&q=info:".$url;
        $data=file_get_contents($query);
        $pos = strpos($data, "Rank_");
        if($pos === false){} else{
            $pagerank = substr($data, $pos + 9);
            return $pagerank;
        }


    }
    if($_POST['urls'])
    {
        ?><table border="1">
        <th>URL</th>
        <th>Pagerank</th>
        <?
        $urls=trim($_POST['urls']);
        $url=explode("\n",$urls);
        foreach($url as $url)
        {
            if($url)
            {
                $url=trim($url);
                $pagerank=getpagerank($url);
                ?>
                <tr><td><?php echo $url; ?></td><td><?php echo $pagerank; ?></td></tr>
                <?        
                flush();
            }                
        }
        ?></table><?
    }
    else
    {
        ?><form action="" method="post">
        URLS:<br /><textarea name="urls" cols="50" rows="10">http://www.google.com
    http://www.yahootracer.com</textarea><br /><input type="submit" value="Check PR"/>
        </form>
        <?
    }
    ?>

You have reached the default script execution timeout. 您已达到默认脚本执行超时。 You could try use set_time_limit(0) to disable the timeout. 您可以尝试使用set_time_limit(0)禁用超时。 But as probably you are running your script under webserver - then the webserver timeouts can apply, which cannot be avoided and are configured by system administrators. 但是,由于您可能正在Web服务器下运行脚本-然后Web服务器超时可以应用,这是无法避免的,并且由系统管理员配置。 In this case - best thing would be to perform huge inserts by running a shell script (eg cronjob). 在这种情况下-最好的办法是通过运行Shell脚本(例如cronjob)执行大量插入操作。

You must add set_time_limit(0) after the row $query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)). "&features=Rank&q=info:".$url; 您必须在$query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)). "&features=Rank&q=info:".$url;行之后添加set_time_limit(0) $query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)). "&features=Rank&q=info:".$url; $query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)). "&features=Rank&q=info:".$url;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 PHP致命错误:在中超出了-1秒的最大执行时间 - PHP Fatal error: Maximum execution time of -1 seconds exceeded in php html致命错误:超过30秒的最大执行时间 - php html Fatal error: Maximum execution time of 30 seconds exceeded PHP fgetcsv遇到致命错误:Firefox超过了最大执行时间 - PHP fgetcsv encounters Fatal error: Maximum execution time exceeded on Firefox 致命错误:我的PHP中超出了30秒的最大执行时间 - Fatal error: Maximum execution time of 30 seconds exceeded in my php 致命错误:超过最长执行时间0秒 - Fatal error: Maximum execution time of 0 seconds exceeded 致命错误:超出最大执行次数 - Fatal error: Maximum execution exceeded PHP 页面加载问题:PHP 致命错误:超过 30 秒的最大执行时间 - PHP Page Load Issue: PHP Fatal error: Maximum execution time of 30 seconds exceeded 致命错误:在php中生成大量缩略图时超过了最大执行时间 - Fatal error: maximum execution time exceeded when generating mass thumbnails in php 致命错误:wp-db.php的最大执行时间超过60秒 - Fatal error: Maximum execution time of 60 seconds exceeded for wp-db.php 使用XMPP的PHP聊天客户端-致命错误超过30秒的最大执行时间 - PHP Chat client using XMPP - Fatal error Maximum execution time of 30 seconds exceeded
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM