0

40,000アイテムのリストを取得し、アイテムごとにjsonリクエストを実行しようとしています。次のリクエストが開始する前に各jsonリクエストが終了しているため、プロセスは非常に遅いと思います。

$result = mysql_query("SELECT * FROM $tableName");

while($row = mysql_fetch_array($result))
{
 checkRank($row['Domain']);
}

checkRankは、次のような効果を実行しています。

$json = file_get_contents($jsonurl,0,null,null);

プロセスをスピードアップするために、一度に10個のcheckRankを実行できると思いますか?他のアイデア/提案はありますか?

アップデート:

たとえば、このループは27秒で私の配列を実行します。

for ($i=0; $i<=100; $i++) {
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
checkRank($domains[$i]);
$i++;
echo "checking " . $i . "<br/>";

}

以下のループは、同じアレイで40秒以上かかります。

for ($i=0; $i<=100; $i++) {
checkRank($domains[$i]);
echo "checking " . $i . "<br/>";

}

4

4 に答える 4

1

まだ言及していないことがない限り、これを行う最善の方法は、1つのJSONリクエストを実行してアイテムをそれに渡し、同じ数の結果を返すことです。これにより、サーバーの応答時間を最小限に抑えることができます。40,000個のアイテムを送信するかどうかはわかりませんが、2つの部分に分割することもできますが、後でテストすることができます。

したがって、checkRank()は次のようになります。

function  checkRank($domainsArray) {
$json = file_get_contents($jsonurl,$domainsArray);
}
于 2012-09-11T19:31:30.730 に答える
1

私はPHPを使用していないため、これが大いに役立つかどうかはわかりませんが、これは見つかりました。

PHPアプリケーションでマルチスレッドを使用するにはどうすればよいですか

于 2012-09-11T19:32:24.460 に答える
1

http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/

これは、処理を高速化するための優れた方法のようです。すべての入力者に感謝します。

于 2012-09-11T21:54:02.053 に答える
1

...残念ですが、今日Stack Overflowで読んだところによると、PHPは言語の根本的な変更が必要になるため、スレッド化をサポートできませんでした...

https://github.com/krakjoe/pthreads

于 2012-09-13T18:30:02.233 に答える