对于初学者来说,代码示例没有任何异步。这意味着您的应用程序将按顺序执行get请求,等待响应,解析响应并返回。
虽然Goutte在内部使用Guzzle,但它并未使用Guzzles异步功能。
要真正使你的代码异步你将要参考狂饮文档上:
你上面的代码示例会导致类似:
require 'vendor/autoload.php' //assuming composer package management.
$client = new GuzzleHttp\Client();
$requests = [
$client->createRequest('GET', $url1),
$client->createRequest('GET', $url2),
$client->createRequest('GET', $url3),
$client->createRequest('GET', $url4),
$client->createRequest('GET', $url5),
$client->createRequest('GET', $url6),
$client->createRequest('GET', $url7),
$client->createRequest('GET', $url8),
$client->createRequest('GET', $url9),
$client->createRequest('GET', $url10),
];
$options = [
'complete' => [
[
'fn' => function (CompleteEvent $event) {
$crawler = new Symfony\Component\DomCrawler\Crawler(null, $event->getRequest()->getUrl());
$crawler->addContent($event->getResponse->getBody(), $event->getResponse()->getHeader('Content-Type'));
echo '<p>'.$crawler->filterXpath('//meta[@property="og:description"]')->attr('content').'</p>';
echo '<p>'.$crawler->filter('title')->text().'</p>';
},
'priority' => 0, // Optional
'once' => false // Optional
]
]
];
$pool = new GuzzleHttp\Pool($client, $requests, $options);
$pool->wait();
嘿肖恩,谢谢你的解释。尽管这段代码中出现'Uncaught exception'InvalidArgumentException'消息'错误。 – 2015-04-05 16:35:59
@PriyaRawat - 当您提供的信息与所提供的信息一样少时,要求我排除类似于描述的错误时,不公平或合理。话虽如此,我敢冒险猜测您正在尝试使用Goutte附带的Guzzle版本。根据您使用的Goutte版本(可能)将不会有正确版本的Guzzle。确保composer.json文件列出guzzlehttp \ guzzle和symfony \ dom-crawler。 – 2015-04-06 02:59:42