Guzzle中的异步请求

本文介绍了如何在Guzzle中发起异步HTTP请求,讨论了PHP的HTTP请求方式,如curl和stream,并详细解析了URI、请求组装、同步与异步调用,特别是wait()方法的实现和Promise类的角色。
摘要由CSDN通过智能技术生成

Guzzle中的异步请求

使用Guzzle发起异步请求

Guzzle是一个PHP的HTTP客户端,它在发起http请求时不仅可以同步发起,还可以异步发起。

$client = new Client();
$request = new Request('GET', 'http://www.baidu.com');
$promise = $client->sendAsync($request)->then(function ($response) {
   
	echo $response->getBody();
});
// todo something
echo 1;
$promise->wait();

PHP发起HTTP请求的几种方式

curl

使用libcurl库,允许你与各种的服务器使用各种类型的协议进行连接和通讯。

stream

通过流的方式获取和发送远程文件,该功能需要ini配置allow_url_fopen=on。关于php的流更多参考PHP流(Stream)的概述与使用详解

在guzzle中可以兼容使用这两种的任意一种或者是用户自定义的http handler

function choose_handler()
{
   
    $handler = null;
    if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
   
        $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
    } elseif (function_exists('curl_exec')) {
   
        $handler = new CurlHandler();
    } elseif (function_exists('curl_multi_exec')) {
   
        $handler = new CurlMultiHandler();
    }

    if (ini_get('allow_url_fopen')) {
   
        $handler = $handler
            ? Proxy::wrapStreaming($handler, new StreamHandler())
            : new StreamHandler();
    } elseif (!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值