webman 使用 http-client 携程请求

lsmir2

问题描述

webman 使用 http-client 携程请求
参考https://www.workerman.net/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工具请求 直接阻塞了

357 1 1
1个回答

sm2010

协程并不能加速单个请求,协程只是提高服务端并发处理能力。所以在postAPI工具端看到单个请求是阻塞的很正常。
比如$backurl请求需要1秒返回,你用curl的话一个进程1秒只能处理一个$backurl请求,用http-client则一秒可以处理N个$backurl请求,但是单个postAPI请求结果仍然是1秒。

  • lsmir2 2024-06-09

    我测试的时候没有返回结果,这并不是我的预期,

  • sm2010 2024-06-09

    echo $response->getBody(); 只会打印在控制台,不会返回结果的。
    按照手册返回结果要用 return $response->getBody();

×
🔝