PHP 简单 HTML DOM 解析器 : make it loop until no error

标签 php html parsing dom

我有一个名为 GrabUrTime 的应用程序,它是一个时间表查看实用程序,可以从另一个网站(我大学的网络空间)获取时间表。每隔凌晨 2 点,我都会运行一个脚本,使用解析器抓取所有时间表并将其转储到我的数据库中。

但是今天uni的服务器运行得不好,我的脚本在uni的服务器上不断给我错误500,使得脚本无法继续运行。这是周期性的,而不是总是如此。然而我尝试了几次,它只是随机发生,根本没有模式。

因此我想让我的脚本来处理错误并使其循环直到获取数据。

function grabtable($intakecode, $week) {
$html = file_get_html("http://webspace.apiit.edu.my/schedule/intakeview_intake.jsp?Intake1=".$intakecode."&Week=" . $week);
$dumb = $html->find('table[border=1] tr');
$thatarray = array();
        for ($i=1; $i < sizeof($dumb);++$i){
        $arow = $html->find('table[border=1] tr', $i);
         $date = $arow->find('td font', 0)->innertext;
         $time = $arow->find('td font', 1)->innertext;
        $room = $arow->find('td font', 2)->innertext;
        $loca = $arow->find('td font', 3)->innertext;
         $modu = $arow->find('td font', 4)->innertext;
         $lect = $arow->find('td font', 5)->innertext;
        $anarray = array($date, $time, $room, $loca, $modu, $lect);
        $thatarray[$i] = $anarray;

        //echo "arraylol";
    }
    //echo serialize($tablearray)."<br/>";
    $html->clear();
    return $thatarray;
}

最佳答案

尝试这样的事情:

function getHttpCode($url)
{
    $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    $ch=curl_init();
    curl_setopt ($ch, CURLOPT_URL,$url );
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch,CURLOPT_VERBOSE,false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    $page=curl_exec($ch);

    //echo curl_error($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if($httpcode>=200 && $httpcode<300) 
    {
        // YOUR CODE
    }
else
{
    // What you want to do should it fail
    // perhaps this will serve you better as while loop, e.g.
    // while($httpcode>=200 && $httpcode<300) { ... }
}

用法

 getHttpCode($url);

它可能无法整齐地插入您的代码,但我确信它可以帮助进行一些重构以适应您现有的代码结构。

关于PHP 简单 HTML DOM 解析器 : make it loop until no error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9274230/

相关文章:

javascript - 使用 requestAnimationFrame 的 JavaScript 动画帧速率不稳定

java - libgdx Json解析

C# 仅将 DateTime String 解析为时间

php - 在页面中使用变量并在另一个页面中使用该变量

php - 如何使用 PHP 将撇号从文本区域传递到 MySQL

php - 通过仅填写多个输入字段之一来更新 mysqli 数据库

javascript - 如何让缩略图显示在 "Add File"按钮下方?

javascript - 使用 MeshLambertMaterial 时出错

python - 如何使用Python将sudoers文件转换为JSON数据?

php - MySQL-错误 : Unknown column in where clause