0

次の問題があります。複数のページを含む xml フィードを解析していますが、その数を理解する方法がありません (xml の URL に変数が設定されているため、変数ごとにランダムな数のページがあります)。私が知っているのは、その数が 50 を超えることはできないということだけです。これで、ページ番号の変数を 1 から 50 まで自動インクリメントするスクリプトができました。

リンクに合計 26 ページがあるとします。私のスクリプトでは、スクリプトが 50 ページに到達するまでリクエストを送信し続けます。最初の変数が変更され、1 から 50 に戻ります。最初のリンクの場合、27 ページ以降、xml は次のように返されます。

<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

4

1 に答える 1

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

問題は、ある時点でスクリプトの実行が停止することです。理由がわかりません。

于 2012-09-14T19:00:08.483 に答える