webman 使用 http-client 攜程請(qǐng)求
參考http://m.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工具請(qǐng)求 直接阻塞了
協(xié)程并不能加速單個(gè)請(qǐng)求,協(xié)程只是提高服務(wù)端并發(fā)處理能力。所以在postAPI工具端看到單個(gè)請(qǐng)求是阻塞的很正常。
比如$backurl請(qǐng)求需要1秒返回,你用curl的話一個(gè)進(jìn)程1秒只能處理一個(gè)$backurl請(qǐng)求,用http-client則一秒可以處理N個(gè)$backurl請(qǐng)求,但是單個(gè)postAPI請(qǐng)求結(jié)果仍然是1秒。
echo $response->getBody(); 只會(huì)打印在控制臺(tái),不會(huì)返回結(jié)果的。
按照手冊(cè)返回結(jié)果要用 return $response->getBody();
wokermen是獨(dú)立的,需要請(qǐng)求A服務(wù)器,并發(fā)數(shù)也會(huì)受A服務(wù)器的子進(jìn)程務(wù)限制,那么我直接同步請(qǐng)求A服務(wù)器跟異步請(qǐng)求A服務(wù)器有什么區(qū)別?不都要執(zhí)行子進(jìn)程數(shù)量么