php Guzzle,异步请求的重要性

欢迎入企鹅群技术讨论:773298533
近期在写php接口开发,一个php文件里需要请求多个第三方接口,就在测试的时候打印耗时居然达到了1000ms!(一共需要请求四个第三方接口);
也在群友推荐接触到了guzzle类;能实现多个请求异步进行(好像是伪异步,懒得深究);
我用tp5写了个测试,guzzle和file_get_contents各请求四次,并且打印耗时,结果很明显
guzzle手册:http://guzzle-cn.readthedocs.io/zh_CN/latest/overview.html

多次测试结果
guz:300ms----fgc:845ms
guz:265ms----fgc:743ms
guz:277ms----fgc:789ms
guz:272ms----fgc:690ms
namespace app\open\controller;
use think\Request;
use think\Model;
use GuzzleHttp\Client;
use GuzzleHttp\Promise;
class Index
{
    public function index(){
list($msec, $sec) = explode(' ', microtime());
$time=(float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
    $client = new Client(['base_uri' => 'http://httpbin.org/']);

// Initiate each request but do not block
$promises = [
    'image' => $client->getAsync('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%7B%22itemNumId%22%3A%22568914501203%22%7D'),
    'png'   => $client->getAsync('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%7B%22itemNumId%22%3A%22568914501203%22%7D'),
    'jpeg'  => $client->getAsync('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%7B%22itemNumId%22%3A%22568914501203%22%7D'),
    'webp'  => $client->getAsync('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%7B%22itemNumId%22%3A%22568914501203%22%7D')
];

$results = Promise\unwrap($promises);
list($msec, $sec) = explode(' ', microtime());
$time2=(float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);


$client=file_get_contents('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%7B%22itemNumId%22%3A%22568914501203%22%7D');
$client=file_get_contents('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%7B%22itemNumId%22%3A%22568914501203%22%7D');
$client=file_get_contents('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%7B%22itemNumId%22%3A%22568914501203%22%7D');
$client=file_get_contents('http://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?appKey=12574478&api=mtop.taobao.detail.getdetail&v=6.0&type=json&data=%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';
    }
}
?>````
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在写后台代码时,避免不了需要与其他第三方接口交互,如向服务号下发模板消息,有时可能需要下发超过 10 万条。这时不...
    Coding01阅读 17,995评论 6 11
  • 理工寝室商店-微信小程序 疑问小结 当时在XAMMP下mysql目录下的bin下 php -v 不起作用.到ph...
    这个超人不会飞阿阅读 1,769评论 1 1
  • “亲爱的xx,您已成功订阅······”。不知何时,我的手机微信上“时尚女装”把我当成女士,老发女性养生、养颜、穿...
    黑荞阅读 967评论 15 16
  • 9点起床 9.30出发 11点出发前往客户那里,途中接到电话,客户有事改期,我们直接到项目上进行考察,一直到下午2...
    阿麦_bdb1阅读 198评论 0 0
  • 鹧鸪天 . 醉把江南做梓桑 醉把江南作梓桑,一溪明月一山霜。 百花才落縠纹碧,万树繁生新叶黄。 魂亦短,梦犹长,举...
    诗词水之皮阅读 471评论 11 17