Mix PHP V 2エコ:GuzzleにSwooleのHook協程をサポートさせる


Guzzleは非常に流行しているPHPのHTTPクライアントであり、現在各工場のSDKもGuzzleに基づいて開発を開始している.SwooleはPHP StreamのコラボレーションHookのみをサポートしているが、GuzzleのデフォルトはcURL拡張を使用しているため、Mix PHPはGuzzle Hookを開発し、ソースコードを変更せずにGuzzzleをコラボレーション化することができる.
Github
  • https://github.com/mix-php/guzzle-hook

  • インストール
    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
    例:
  • alibabacloud/client
  • TencentCloud/tencentcloud-sdk-php

  • このようなサードパーティ製ライブラリは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;
        }
    
    });