假設(shè)webman只能開一個(gè)進(jìn)程
假設(shè)https://example.com的響應(yīng)時(shí)間是1-10秒,可能根據(jù)傳入的參數(shù)不同,響應(yīng)時(shí)間也不同
public function test(Request $request) {
$http = new Workerman\Http\Client();
// 同步請求
$response = $http->get('https://example.com/');
// 同步請求是假設(shè)每次的響應(yīng)時(shí)間都是10秒,那么處理的效率就只能依賴前一個(gè)請求的響應(yīng),依次處理
return $response->getBody();
}
public function testAsync(Request $request) {
$http = new Workerman\Http\Client();
$connection = $request->connection;
// 異步請求
$http->get('https://example.com/', function ($response) use ($connection) {
//$connection->send(new Chunk($response->getBody()));
//$connection->send(new Chunk('')); // 發(fā)送空的的chunk代表response結(jié)束
});
//return response()->withHeaders(["Transfer-Encoding" => "chunked",]);
//不太確定這里是立即返回還是保存的上下文信息以等待處理完成,看上面的return代碼應(yīng)該是立即返回
// 如果是立即返回了,但是請求端希望拿到具體的響應(yīng)結(jié)果,且不需要做額外的處理,就按正常的同步請求處理
}
請問testAsync應(yīng)該怎么處理可以達(dá)到增加并發(fā),而且不需要調(diào)用端額外處理?
或者只能根據(jù)header設(shè)置的參數(shù)來額外處理