2015-04-08 2 views
0

не outputing Это код, я используюSymfony DomCrawler это ничего

$client = new Client(); 

$requests = [ 
$client->createRequest('GET', 'http://httpbin.org'), 
$client->createRequest('GET', 'http://httpbin.org') 
]; 

$options = [ 
'complete' => [ 
    [ 
     'fn' => function (CompleteEvent $event) { 
      $crawler = new Crawler('GET', $event->getRequest()->getUrl()); 
      echo '<p>'.$crawler->filter('title')->text().'</p>'; 
     }, 
     'priority' => 0, 
     'once'  => false 
    ] 
    ] 
]; 

$pool = new Pool($client, $requests, $options); 
$pool->wait(); 

Это не дает ошибки, но не выводит ничего либо. Я попытался заменить URL-адреса, но до сих пор не получаю никакого вывода.

+0

является 'error_reporting' на для всех' 'errors' и warnings' ?? –

ответ

1

Ваша основная проблема с образцом кода - это создание вашего объекта Symfony\Component\DomCrawler\Crawler. Как написано в настоящее время, «GET» является единственным содержанием $crawler; в результате вызов $crawler->filter() возвращает экземпляр Symfony\Component\DomCrawler\Crawler, который содержит пустой список DOMNodeList. Вот почему ваш вывод пуст.

Заменить:

$crawler = new Crawler('GET', $event->getRequest()->getUrl()); 

с:

$crawler = new Crawler(null, $event->getRequest()->getUrl()); 
$crawler->addContent(
    $event->getResponse()->getBody(), 
    $event->getResponse()->getHeader('Content-Type') 
); 
+0

Hey Shaun, я получил 'Undefined property: GuzzleHttp \ Event \ CompleteEvent :: $ getResponse' эту ошибку после изменения кода. –

+0

Хорошо, я ошибался 'getResponse()' в первой строке как 'getResponse' Спасибо, что он работает сейчас. –

+0

Эй, Шон, я хотел спросить, что еще одна вещь - эти асинхронные запросы? –