私は複数のGET要求を使用して5000人以上のユーザーの場所を取得する必要があるシステムを開発しています。残念ながら、APIエンドポイントは複数のクライアントIDをサポートしていません。すなわち、私は5000以上のユニークな取得リクエストを作成して、そのロケーションを取得し、累積レスポンスを使用して別のAPIコールを作成する必要があります。タイムアウトなしで複数のカール要求を行う。
私はリクエストを行うためにCURLを使用しています。私は次のスニペット[1]を使ってリクエストを行いました。
少数のリクエストに対しては完璧に機能しますが、1000を超えるとタイムアウトになると、タイムアウトになります。
$data = [];
for ($i = 0; $i < 1000; $i++) {
$data[] = 'https://foo.bar/api/loc/v/queries/location?address=XXXXXXXXX';
}
$token = $this->refresh();
$r = $this->multiRequest($data, $token);
この問題を解決するにはどうすればよいでしょうか?
- a。 PHPスクリプトのmaximum_execution_timeを増やすか、
- b。マルチスレッドまたは
- のようなものを使用してください。その他
は、それはリクエストのボトルネックの影響を受けやすく、それはシステムが不安定になることができます。私は良い解決策はキュー(例:RabbitMQ)+ javaプロセス(またはnodejs)PHPをサポートする複数の要求を行うと思います。このプロセスの要求、マルチスレッド、メモリの制御を制限することができます。ウェブ用のPHPでタスクを分離することは、円滑な操作のままです。 – Vuong