webman 使用 http-client 攜程請求
參考http://www.wtbis.cn/q/10702
composer require workerman/workerman v5.0.0-beta.7 revolt/event-loop ^1.0.0 workerman/http-client ^2.0.0
public static function RequestPost(string $backUrl, array $data, Logger $log): void
{
$http = new \Workerman\Http\Client();
$response = $http->request($backUrl, [
'method' => 'POST',
'version' => '1.1',
'headers' => ['Content-Type' => 'application/json',],
'data' => json_encode($data)
]);
echo $response->getBody();
}
我用postAPI工具請求 直接阻塞了
協(xié)程并不能加速單個(gè)請求,協(xié)程只是提高服務(wù)端并發(fā)處理能力。所以在postAPI工具端看到單個(gè)請求是阻塞的很正常。
比如$backurl請求需要1秒返回,你用curl的話一個(gè)進(jìn)程1秒只能處理一個(gè)$backurl請求,用http-client則一秒可以處理N個(gè)$backurl請求,但是單個(gè)postAPI請求結(jié)果仍然是1秒。
echo $response->getBody(); 只會打印在控制臺,不會返回結(jié)果的。
按照手冊返回結(jié)果要用 return $response->getBody();
wokermen是獨(dú)立的,需要請求A服務(wù)器,并發(fā)數(shù)也會受A服務(wù)器的子進(jìn)程務(wù)限制,那么我直接同步請求A服務(wù)器跟異步請求A服務(wù)器有什么區(qū)別?不都要執(zhí)行子進(jìn)程數(shù)量么