データベース内のテーブルの 1 つで各行 (またはユーザー) を処理し、cURL を使用して行で見つかったユーザー名に基づいて URL を取得し、追加情報を同じ行。これはほとんどの場合問題なく動作しますが、データベース全体を処理するには約 20 分以上かかるようで、while ループに入るほど遅くなるようです。現在、約 4000 行ありますが、今後さらに増える予定です。
現在、私のコードの簡略版は次のようになっています。
$i=0;
while ($i < $rows) {
$username = mysql_result($query,$i,"username");
curl_setopt($ch, CURLOPT_URL, 'http://www.test.com/'.$username.'.php');
$page = curl_exec($ch);
preg_match_all('htmlcode',$page,$test)
foreach ($test as $test3) {
$test2 = $test[$test3][0];
}
mysql_query("UPDATE user SET info = '$test2' WHERE username = '$username');
++$i;
}
MySQL クエリを while ループに入れてはならないことはわかっています。それは私が削除する最後のクエリですが、非常に長い間何度も実行する必要がある while ループを処理する最良の方法は何ですか?
最善の選択肢は、スクリプトを一度に 10 行ずつ実行してから停止することだと考えていました。たとえば、CRON にスクリプトがあるので、5 分ごとにスクリプトを実行し、10 行を実行して停止し、CRON ジョブが再開されたときに次の 10 行を取得することを何らかの方法で認識したいと考えています。ただし、これを達成する方法がわかりません。
どんな助けでも大歓迎です!