使用goutte同时发出HTTP请求

时间:2014-06-25 17:53:29

标签: php http curl guzzle goutte

我知道goutte建立在guzzle之上。带有guzzle的同时HTTP请求的Here's a sample

<?php
$client->send(array(
    $client->get('http://www.example.com/foo'),
    $client->get('http://www.example.com/baz'),
    $client->get('http://www.example.com/bar')
));

同时请求也可以通过goutte运行吗?

1 个答案:

答案 0 :(得分:1)

只需查看Goutte的代码即可快速显示它不支持多个请求。

但是,如果您愿意,可以通过收集Guzzle请求并创建新的 Symfony \ Component \ BrowserKit \ Response 对象来模仿Goutte,这是Goutte为用户返回的对象与。。。相互作用。

Check out their createResponse() function(不幸的是受到保护)了解更多信息。

<?php

// Guzzle returns an array of Responses.
$guzzleResponses = $client->send(array(
    $client->get('http://www.example.com/foo'),
    $client->get('http://www.example.com/baz'),
    $client->get('http://www.example.com/bar')
));

// Iterate through all of the guzzle responses.
foreach($guzzleResponses as $guzzleResponse) {
    $goutteObject = new Symfony\Component\BrowserKit\Response(
           $guzzleResponse->getBody(true), 
           $guzzleResponse->getStatusCode(), 
           $guzzleResponse->getHeaders()
    );

    // Do things with $goutteObject as you normally would.
}

注意,当您等待 $ guzzleResponses 中收集回复时,它将等待所有异步完成。如果您想立即做出回复,请查看Guzzle documentation for handling async requests