次の問題があります。複数のページを含む 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
。