我有一种情况,我有一个循环,它将从文件中读取数据块,将这些块发送到rest 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;
}
});
}
在这种情况下,我希望(如果读取chunk比从api获得响应更快)会发生这样的事情,不要认为这是文学上的,我正试图为您说明它。
正在读取下一块
正在读取下一块
已处理区块
正在读取下一块
已处理区块
已处理区块
https://stackoverflow.com/questions/53598490
复制相似问题