亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

GuzzleSwoole v1.1.0,讓 Guzzle 完美兼容 Swoole 協(xié)程

helloworldcoding / 622人閱讀

摘要:這個(gè)項(xiàng)目目前已經(jīng)實(shí)現(xiàn)無(wú)需修改任何代碼,只需一句話設(shè)置全局默認(rèn)處理器,完美無(wú)縫兼容協(xié)程環(huán)境。使用在中,你可以把默認(rèn)設(shè)為。

讓 Guzzle 支持 Swoole 協(xié)程,這個(gè)項(xiàng)目目的就是這么簡(jiǎn)單明了!

本項(xiàng)目不包含 Guzzle 功能,請(qǐng)自行在項(xiàng)目中引用 Guzzle 6.x,理論上可以支持升級(jí) Guzzle 版本而無(wú)需更新 Guzzle-Swoole!

Composer:"yurunsoft/guzzle-swoole":"~1.1"

v1.1.0 版本說(shuō)明:

說(shuō)明

眾所周知,使用 Guzzle 指定 Handler,需要在實(shí)例化 Client 時(shí)傳入。

這樣一來(lái),想要把基于 Guzzle 開(kāi)發(fā)的 SDK 用于 Swoole 協(xié)程環(huán)境就需要對(duì)原有 SDK 代碼進(jìn)行修改。

Guzzle-Swoole 這個(gè)項(xiàng)目目前已經(jīng)實(shí)現(xiàn)無(wú)需修改任何代碼,只需一句話設(shè)置全局默認(rèn)處理器,完美無(wú)縫兼容 Swoole 協(xié)程環(huán)境。

使用

在 Swoole >= 4.2.0 中,你可以把默認(rèn) Handler 設(shè)為 StreamHandler。

GuzzleHttpDefaultHandler::setDefaultHandler(YurunUtilSwooleGuzzleSwooleHandler::class);

在 Swoole < 4.2.0 中,你可以把默認(rèn) Handler 設(shè)為本項(xiàng)目實(shí)現(xiàn)的 SwooleHandler。

GuzzleHttpDefaultHandler::setDefaultHandler(GuzzleHttpHandlerStreamHandler::class);

這樣一來(lái),實(shí)現(xiàn)完美無(wú)縫兼容~

實(shí)現(xiàn)原理

首先依賴了funkjedi/composer-include-files這個(gè)項(xiàng)目,這個(gè)項(xiàng)目的功能是把composer.json中配置引入的文件優(yōu)先引入,這樣就可以在這個(gè)文件里進(jìn)行提前處理

接著通過(guò) Composer 插件機(jī)制,在post-autoload-dump事件中做處理。

讀取guzzlehttp/guzzle/src/functions.php文件,將choose_handler()方法定義從代碼中去除,把修改后內(nèi)存保存為guzzle-swoole/src/load.php文件。

guzzle-swoole/src/functions.php文件中定義了修改后的choose_handler()方法,用于實(shí)現(xiàn)全局默認(rèn)處理器的設(shè)置和獲取。

load.phpfunctions.php兩個(gè)文件會(huì)在運(yùn)行時(shí)優(yōu)先引入,然后根據(jù)guzzlehttp/guzzle/src/functions_include.php中寫(xiě)的判斷,Guzzle 就不會(huì)再引入他原有的functions.php文件了。

代碼倉(cāng)庫(kù)

碼云:https://gitee.com/yurunsoft/G...

Github:https://github.com/Yurunsoft/...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30903.html

相關(guān)文章

  • Mix PHP V2 生態(tài): Guzzle 支持 Swoole 的 Hook 協(xié)程

    摘要:是一個(gè)非常流行的的客戶端,現(xiàn)在各大廠的也都開(kāi)始基于開(kāi)發(fā),因?yàn)橹恢С值膮f(xié)程,而默認(rèn)是使用擴(kuò)展的,所以開(kāi)發(fā)了,能在不修改源碼的情況下讓協(xié)程化。 Guzzle 是一個(gè)非常流行的 PHP 的 HTTP 客戶端,現(xiàn)在各大廠的 SDK 也都開(kāi)始基于 Guzzle 開(kāi)發(fā),因?yàn)?Swoole 只支持 PHP Stream 的協(xié)程 Hook ,而 Guzzle 默認(rèn)是使用 cURL 擴(kuò)展的,所以 Mix...

    Flands 評(píng)論0 收藏0
  • Mix PHP V2 實(shí)例:AliCloud 短信協(xié)程池異步發(fā)送守護(hù)程序

    摘要:前些時(shí)間我們發(fā)布了實(shí)例協(xié)程池異步郵件發(fā)送守護(hù)程序范例,這一次我們提供一個(gè)使用大廠通過(guò)協(xié)程化來(lái)并行執(zhí)行短信發(fā)送任務(wù),本文是一個(gè)代碼簡(jiǎn)單性能極強(qiáng)的范例。 前些時(shí)間我們發(fā)布了 Mix PHP V2 實(shí)例:協(xié)程池異步郵件發(fā)送守護(hù)程序 范例,這一次我們提供一個(gè)使用大廠 SDK 通過(guò) Swoole Hook 協(xié)程化來(lái)并行執(zhí)行短信發(fā)送任務(wù),本文是一個(gè)代碼簡(jiǎn)單、IO 性能極強(qiáng)的范例。 請(qǐng)先升級(jí)到 m...

    qc1iu 評(píng)論0 收藏0
  • Hyperf Hyperf 是基于 Swoole 4.3+ 實(shí)現(xiàn)的高性能、高靈活性的 PHP 協(xié)程框架,內(nèi)置協(xié)程服務(wù)器及大量常用的組件,性能較傳統(tǒng)基于 PHP-FPM 的框架有質(zhì)的提升,提供超高性能的同時(shí),也保持著極其靈活的可擴(kuò)展性,標(biāo)準(zhǔn)組件均均基于 PSR 標(biāo)準(zhǔn) 實(shí)現(xiàn),基于強(qiáng)大的依賴注入設(shè)計(jì),保證了絕大部分組件或類都是 可替換 與 可復(fù)用 的。 框架組件庫(kù)除了常見(jiàn)的協(xié)程版的 MySQL 客戶端、...

    diabloneo 評(píng)論0 收藏0
  • v1.0.2 更新內(nèi)容 本次更新涉及以下組件 hyperf/databasehyperf/dihyperf/eventhyperf/http-serverhyperf/loggerhyperf/redishyperf/contract Added 接入 Travis CI,目前 Hyperf 共存在 426 個(gè)單測(cè),1124 個(gè)斷言; #25 完善了對(duì) Redis::connect 方法的...

    EsgynChina 評(píng)論0 收藏0
  • 更新內(nèi)容 hyperf-skeleton v1.0.3 Added 安裝器為 RPC 部分增加 JSON RPC with Service Governance 選項(xiàng), 選擇該選項(xiàng)會(huì)自動(dòng)安裝 hyperfservice-governance 服務(wù)治理組件; 骨架內(nèi)提供的 AppExceptionHandlerAppExcpetionHandler 默認(rèn)輸出異常信息 Changed 將 AppM...

    alaege 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<