【问题标题】:Using a Swoole \Swoole\Coroutine\Http\Client based HttpClientAdapter for Guzzle - How?使用基于 Swoole \Swoole\Coroutine\Http\Client 的 HttpClientAdapter 进行 Guzzle - 如何?
【发布时间】:2018-08-07 01:04:01
【问题描述】:

我尝试为Swoole 实现一个Guzzle HandlerStack HttpClientAdapter 并通过以下方式使用它:

$handler = new \App\Swoole\HttpClientAdapter();
$client = new \GuzzleHttp\Client([
   'handler' => \GuzzleHttp\HandlerStack::create($handler),
]);
$res = $client->request('POST', 'http://localhost/foo');

处理程序类如下所示:

namespace App\Swoole;

class HttpClientAdapter
{

    public function __invoke(RequestInterface $request, array $options)
    {
        // [..] init and request modification, path/port extraction removed

        $cli = new \Swoole\Coroutine\Http\Client($ip, $port, $ssl);
        $cli->execute($path);
        $cli->close();

        return new Promise\FulfilledPromise(

            new Psr7\Response($cli->statusCode, $cli->headers, $cli->body)
        );
    }
}

这确实有效 - 但前提是我在两者之间添加了 MockServer Proxy。 没有,我只是没有得到任何数据......我尝试使用不同的端点,但无济于事。有人知道如何解决/调试问题和/或在野外有 Swoole Guzzle 适配器吗?

【问题讨论】:

    标签: php guzzle6


    【解决方案1】:

    嗯,这项工作很棒。 但是我建议另外一个基于swoole协程的httpclient:https://github.com/swlib/saber/blob/master/README-EN.md

    它是由 swoole 核心开发者开发的,你会发现它很像 Guzzle。

    【讨论】:

    • 谢谢,不错的库 - 我选择 guzzle 路线的原因是我需要使用依赖于 Guzzle 的 AWS 开发工具包 - 你知道将 Sabre 与 AWS 开发工具包一起使用的任何方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2022-10-17
    相关资源
    最近更新 更多