资讯专栏INFORMATION COLUMN

Mix PHP V2 生态:让 Guzzle 支持 Swoole 的 Hook 协程

Flands / 2008人阅读

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

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

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 GuzzleHttpClient();
    $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;
    }

});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31388.html

相关文章

  • Mix PHP V2 实例:AliCloud 短信协程池异步发送守护程序

    摘要:前些时间我们发布了实例协程池异步邮件发送守护程序范例,这一次我们提供一个使用大厂通过协程化来并行执行短信发送任务,本文是一个代码简单性能极强的范例。 前些时间我们发布了 Mix PHP V2 实例:协程池异步邮件发送守护程序 范例,这一次我们提供一个使用大厂 SDK 通过 Swoole Hook 协程化来并行执行短信发送任务,本文是一个代码简单、IO 性能极强的范例。 请先升级到 m...

    qc1iu 评论0 收藏0
  • Mix PHP V2 新特性:协程、定时器

    摘要:主函数查询数据不手动释放的连接不会归还连接池,会在析构时丢弃执行结果为,说明是并行执行的。主函数查询数据即便抛出了异常,仍然能执行到,没有导致内的一直处于阻塞状态。主函数一次性定时持续定时停止定时 协程 Mix PHP V2 基于 Swoole 4 的 PHP Stream Hook 协程技术开发,协程使用方式与 Golang 几乎一致,包括框架封装的协程池、连接池、命令行处理都大量参...

    Nosee 评论0 收藏0
  • GuzzleSwoole v1.1.0, Guzzle 完美兼容 Swoole 协程

    摘要:这个项目目前已经实现无需修改任何代码,只需一句话设置全局默认处理器,完美无缝兼容协程环境。使用在中,你可以把默认设为。 让 Guzzle 支持 Swoole 协程,这个项目目的就是这么简单明了! 本项目不包含 Guzzle 功能,请自行在项目中引用 Guzzle 6.x,理论上可以支持升级 Guzzle 版本而无需更新 Guzzle-Swoole! Composer:yurunsoft...

    helloworldcoding 评论0 收藏0
  • Mix PHP V2 实例:协程池异步邮件发送守护程序

    摘要:消费者开发使用本例时,请确保你使用的编译时开启了本例我们采用的守护程序协程池来完成一个超高性能的邮件发送程序。 去年 Mix PHP V1 发布时,我写了一个多进程的邮件发送实例: 使用 mixphp 打造多进程异步邮件发送,今年 Mix PHP V2 发布,全面的协程支持让我们可以使用一个进程就可达到之前多个进程都无法达到的更高 IO 性能,所以今天重写一个协程池版本的邮件发送实例。...

    lauren_liuling 评论0 收藏0
  • Swoole 4.4 协程抢占式调度器详解

    摘要:抢占式调度我们在今年年初就计划实现的抢占式调度,以满足实现有些场景下的不均衡调度带来的问题。考虑开线程,负责检查当前执行协程执行时间。达到我们的第二个协程主动抢占第一个协程的效果。 前言 Swoole内核团队开设的专栏,会逐渐投入精力写文章介绍Swoole的开发历程,实现原理,应用实践等,大家可以更好的交流,共同学习,建设PHP生态。 协程调度 去年Swoole推出了4.0版本后,完整...

    Bowman_han 评论0 收藏0

发表评论

0条评论

Flands

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<