php Guzzle,非同步請求的重要性
近期在寫php介面開發,一個php檔案裡需要請求多個第三方介面,就在測試的時候列印耗時居然達到了1000ms!(一共需要請求四個第三方介面);
也在群友推薦接觸到了guzzle類;能實現多個請求非同步進行(好像是偽非同步,懶得深究);
我用tp5寫了個測試,guzzle和file_get_contents各請求四次,並且列印耗時,結果很明顯
guzzle手冊:
多次測試結果 guz:300ms----fgc:845ms guz:265ms----fgc:743ms guz:277ms----fgc:789ms guz:272ms----fgc:690ms
namespace appopencontroller;use thinkRequest;use thinkModel;use GuzzleHttpClient;use GuzzleHttpPromise;class Index{ public function index(){list($msec, $sec) = explode(' ', microtime()); $time=(float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000); $client = new Client(['base_uri' => '']);// Initiate each request but do not block$promises = [ 'image' => $client->getAsync('%7B%22itemNumId%22%3A%22568914501203%22%7D'), 'png' => $client->getAsync('%7B%22itemNumId%22%3A%22568914501203%22%7D'), 'jpeg' => $client->getAsync('%7B%22itemNumId%22%3A%22568914501203%22%7D'), 'webp' => $client->getAsync('%7B%22itemNumId%22%3A%22568914501203%22%7D') ]; $results = Promiseunwrap($promises);list($msec, $sec) = explode(' ', microtime()); $time2=(float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000); $client=file_get_contents('%7B%22itemNumId%22%3A%22568914501203%22%7D'); $client=file_get_contents('%7B%22itemNumId%22%3A%22568914501203%22%7D'); $client=file_get_contents('%7B%22itemNumId%22%3A%22568914501203%22%7D'); $client=file_get_contents('%7B%22itemNumId%22%3A%22568914501203%22%7D');list($msec, $sec) = explode(' ', microtime()); $time3=(float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);echo 'guz:';echo $time2-$time;echo 'ms';echo '----';echo 'fgc:';echo $time3-$time2;echo 'ms'; } }?>````
作者:阿哇哥哥
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2819/viewspace-2804974/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP 請求用 cURL 還是用 guzzle?PHP
- 使用 Guzzle 中介軟體進行優雅的請求重試
- PHP curl 請求PHP
- OKHttp原始碼學習同步請求和非同步請求(二)HTTP原始碼非同步
- PHP curl 請求使用教程PHP
- php請求API介面方法PHPAPI
- DeferredResult——非同步請求處理非同步
- Axios 非同步請求用法解析iOS非同步
- Okhttp同步請求原始碼分析HTTP原始碼
- axios躺坑之路:cookie,簡單請求與非簡單請求。iOSCookie
- 解決 Laravel 接收非簡單請求時,只有收到 OPTIONS 請求的問題Laravel
- 非同步請求PHP伺服器,你如何做到無阻塞響應非同步PHP伺服器
- php下請求url的幾種方式PHP
- PHP 是怎麼接收到請求的?PHP
- PHP 回顧之 Web 請求PHPWeb
- php 支援jsonp跨域請求PHPJSON跨域
- JMeter——非同步請求效能測試JMeter非同步
- 在 DotNetty 中實現同步請求Netty
- nginx+php執行請求的工作原理NginxPHP
- 【PHP】一次請求過程的解析PHP
- vue 中promise 非同步請求資料VuePromise非同步
- SpringBoot 教程之處理非同步請求Spring Boot非同步
- 爬蟲 | 非同步請求aiohttp模組爬蟲非同步AIHTTP
- js fetch非同步請求使用詳解JS非同步
- php curl 連線 EMQ http_api的請求PHPMQHTTPAPI
- 非同步請求覆蓋如何測試到非同步
- 請求OpenFeign的GET請求時,請求為何失敗?
- 【PHP-FPM】一次請求過程的解析PHP
- Vuex結合Axios非同步請求資料的封裝VueiOS非同步封裝
- Java後端中的請求最佳化:從請求合併到非同步處理的實現策略Java後端非同步
- 有趣的請求引數/請求頭
- 非侵入式入侵 —— Web快取汙染與請求走私Web快取
- Zttp – 一個基於 Guzzle Http 的更好用的 PHP HTTP PackageHTTPPHPPackage
- 谷歌翻譯使用php curl請求介面文件谷歌PHP
- OkHttpClient原始碼分析(一)—— 同步、非同步請求分析和Dispatcher的任務排程HTTPclient原始碼非同步
- PHP與Curl採用的GET,POST,JSON方式請求APIPHPJSONAPI
- android中將原生請求的介面url的cookie同步到webview中。AndroidCookieWebView
- 非同步請求xhr、ajax、axios與fetch的區別比較非同步iOS