摘要:這個項目目前已經實現無需修改任何代碼,只需一句話設置全局默認處理器,完美無縫兼容協程環境。使用在中,你可以把默認設為。
讓 Guzzle 支持 Swoole 協程,這個項目目的就是這么簡單明了!
本項目不包含 Guzzle 功能,請自行在項目中引用 Guzzle 6.x,理論上可以支持升級 Guzzle 版本而無需更新 Guzzle-Swoole!
Composer:"yurunsoft/guzzle-swoole":"~1.1"
v1.1.0 版本說明:
說明眾所周知,使用 Guzzle 指定 Handler,需要在實例化 Client 時傳入。
這樣一來,想要把基于 Guzzle 開發的 SDK 用于 Swoole 協程環境就需要對原有 SDK 代碼進行修改。
Guzzle-Swoole 這個項目目前已經實現無需修改任何代碼,只需一句話設置全局默認處理器,完美無縫兼容 Swoole 協程環境。
使用在 Swoole >= 4.2.0 中,你可以把默認 Handler 設為 StreamHandler。
GuzzleHttpDefaultHandler::setDefaultHandler(YurunUtilSwooleGuzzleSwooleHandler::class);
在 Swoole < 4.2.0 中,你可以把默認 Handler 設為本項目實現的 SwooleHandler。
GuzzleHttpDefaultHandler::setDefaultHandler(GuzzleHttpHandlerStreamHandler::class);
這樣一來,實現完美無縫兼容~
實現原理首先依賴了funkjedi/composer-include-files這個項目,這個項目的功能是把composer.json中配置引入的文件優先引入,這樣就可以在這個文件里進行提前處理
接著通過 Composer 插件機制,在post-autoload-dump事件中做處理。
讀取guzzlehttp/guzzle/src/functions.php文件,將choose_handler()方法定義從代碼中去除,把修改后內存保存為guzzle-swoole/src/load.php文件。
在guzzle-swoole/src/functions.php文件中定義了修改后的choose_handler()方法,用于實現全局默認處理器的設置和獲取。
load.php和functions.php兩個文件會在運行時優先引入,然后根據guzzlehttp/guzzle/src/functions_include.php中寫的判斷,Guzzle 就不會再引入他原有的functions.php文件了。
代碼倉庫碼云:https://gitee.com/yurunsoft/G...
Github:https://github.com/Yurunsoft/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30903.html
摘要:是一個非常流行的的客戶端,現在各大廠的也都開始基于開發,因為只支持的協程,而默認是使用擴展的,所以開發了,能在不修改源碼的情況下讓協程化。 Guzzle 是一個非常流行的 PHP 的 HTTP 客戶端,現在各大廠的 SDK 也都開始基于 Guzzle 開發,因為 Swoole 只支持 PHP Stream 的協程 Hook ,而 Guzzle 默認是使用 cURL 擴展的,所以 Mix...
摘要:前些時間我們發布了實例協程池異步郵件發送守護程序范例,這一次我們提供一個使用大廠通過協程化來并行執行短信發送任務,本文是一個代碼簡單性能極強的范例。 前些時間我們發布了 Mix PHP V2 實例:協程池異步郵件發送守護程序 范例,這一次我們提供一個使用大廠 SDK 通過 Swoole Hook 協程化來并行執行短信發送任務,本文是一個代碼簡單、IO 性能極強的范例。 請先升級到 m...
閱讀 1376·2021-10-14 09:43
閱讀 4209·2021-09-27 13:57
閱讀 4552·2021-09-22 15:54
閱讀 2548·2021-09-22 10:54
閱讀 2350·2021-09-22 10:02
閱讀 2108·2021-08-27 13:11
閱讀 867·2019-08-29 18:44
閱讀 1639·2019-08-29 15:20