ファイルからデータのチャンクを読み取り、それらのチャンクを残りのAPIに送信し、EOFまで続行するループがある状況がありますが、これをループ内で非同期にしたいので、私はAPI が応答して次のチャンクを読み取るまで待つ必要はありません。これに対する解決策が見つからないため、またはこれらのライブラリがどのように使用されることになっているのか理解できないため、Amphp と ReactPHP を調べています。ここに私がやっていることの疑似があります。
<?php
while($file.read()){
$chunk = getNextChunk();
sendChunkAsync($chunk);
}
function getNextChunk(){
echo "reading next chunk";
// read next chunk of data
}
amphp でのサンプル
function sendChunkAsync($chunk){
Loop::run(function () {
$uri = "https://testapi.com/api";
$client = new DefaultClient;
try {
$promises = $client->request($uri);
$responses = yield $promises;
echo "chunk processed";
} catch (Amp\Artax\HttpException $error) {
// log error
// $error->getMessage() . PHP_EOL;
}
});
}
この場合、私は(APIからの応答を取得するよりもチャンクを読み取る方が速い場合)、このようなことを期待します。この文学を取り上げないでください。説明しようとしています。
次のチャンクを読む
次のチャンクを読む
処理されたチャンク
次のチャンクを読む
処理されたチャンク
処理されたチャンク