在解析xml / json时,如果收到错误消息,则跳过页面

时间:2012-09-14 17:16:25

标签: php xml json

我有以下问题。我正在解析一个包含多个页面的xml提要,并且无法理解它们的数量(我在xml网址中设置了一个变量,因此对于每个变量都有随机页数)。我所知道的是这个数字不能超过50.现在我有一个脚本自动增加页码的变量,从1开始,最多50个。

假设该链接共有26页。使用我的脚本,我将继续发送请求,直到脚本到达第50页。它会更改第一个变量,然后从1到50再次开始。对于第一个链接,从第27页开始,xml将返回followwing:

<response>
    <status>error</status>
    <code>400</code>
    <message>Incorrect Request Headers</message>
</response>

当scipt收到此消息时,如何停止自动增量并继续更改第一个变量并再次从1开始?现在的代码是:

$query = "SELECT * FROM table_name ORDER BY id ASC";
$result = mysql_query($query) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) {
    if($row['row_name'] == '') {
        $variable1 = 0;
    }
    else {
        $variable1 = $row['row_name'];
    }

$page = 0;
    do {
        $page++;
        $result = apiCall('option1', 'option2', array('option3' => $variable1, 'page' => $page));
        usleep(1000);
        $res = json_decode($result);
            foreach ($res->node1->node2 as $item) {

            //define variable for insertion in MySQL

            $sql1 to insert the variables
            if (!mysql_query($sql1,$con1))
            {
                die('Error: ' . mysql_error());
            }
        }
    }
    while ($page<=50);
}

在上面的代码中,只有$variable1$page是变量。所有选项(1,2和3)都是预定义的并保持不变。即我需要当脚本从1获取错误消息时再次使用下一个值$variable1

1 个答案:

答案 0 :(得分:0)

行。这是我玩的代码:

$query = "SELECT * FROM table_name ORDER BY id ASC";
$result = mysql_query($query) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) {
    if($row['row_name'] == '') {
        $variable1 = 0;
    }
    else {
        $variable1 = $row['row_name'];
    }

$page = 1;
    do {
        $result = apiCall('option1', 'option2', array('option3' => $variable1, 'page' => $page));
        usleep(1000);
        $res = json_decode($result);
    if ($res->status == 'error') {
            break 2;
        }
            foreach ($res->node1->node2 as $item) {

            //define variable for insertion in MySQL

            $sql1 to insert the variables
            if (!mysql_query($sql1,$con1))
            {
                die('Error: ' . mysql_error());
            }
        }
        $page++;
    }
    while (0);
}

问题是它在某个时刻停止了脚本执行。无法理解为什么。