美文网首页MixPHP 碎片学习
Mix PHP V2 生态:让 Guzzle 支持 Swoole

Mix PHP V2 生态:让 Guzzle 支持 Swoole

作者: 撸代码的乡下人 | 来源:发表于2019-05-06 15:41 被阅读90次

    Guzzle 是一个非常流行的 PHP 的 HTTP 客户端,现在各大厂的 SDK 也都开始基于 Guzzle 开发,因为 Swoole 只支持 PHP Stream 的协程 Hook ,而 Guzzle 默认是使用 cURL 扩展的,所以 Mix PHP 开发了 Guzzle Hook,能在不修改源码的情况下让 Guzzle 协程化。

    Github

    安装

    使用 Composer 安装:

    composer require mix/guzzle-hook
    

    在项目的 composer.json 文件中增加 extra 配置项,如下:

    "extra": {
        "include_files": [
          "vendor/mix/guzzle-hook/src/functions_include.php"
        ]
    }
    

    使用

    直接使用 Guzzle 开发

    无需做任何特殊的代码处理,直接根据 Guzzle 文档使用:

    // Mix PHP 中是 xgo ,原生 swoole 是 go
    go(function () {
    
        $client = new GuzzleHttp\Client();
        $res    = $client->request('GET', 'https://api.github.com/user', [
            'auth' => ['user', 'pass'],
        ]);
        echo $res->getStatusCode();
    
    });
    

    第三方 SDK 依赖 Guzzle

    比如:

    这类第三方库从 composer.json 的 require 能看出来依赖了 guzzlehttp/guzzle,则可以在 Swoole 的协程中直接使用。

    // Mix PHP 中是 xgo ,原生 swoole 是 go
    go(function () {
    
        try {
            // 实例化一个证书对象,入参需要传入腾讯云账户secretId,secretKey
            $cred = new Credential("secretId", "secretKey");
            // # 实例化要请求产品(以cvm为例)的client对象
            $client = new CvmClient($cred, "ap-guangzhou");
            // 实例化一个请求对象
            $req = new DescribeZonesRequest();
            // 通过client对象调用想要访问的接口,需要传入请求对象
            $resp = $client->DescribeZones($req);
            print_r($resp->toJsonString());
        } catch (TencentCloudSDKException $e) {
            echo $e;
        }
    
    });
    

    相关文章

      网友评论

        本文标题:Mix PHP V2 生态:让 Guzzle 支持 Swoole

        本文链接:https://www.haomeiwen.com/subject/vyxdoqtx.html