0
我能夠使用curl_multi實現併發執行curl請求。但是我對這個迴應有問題。即使並行執行請求,只有在執行完所有URL之後纔會收到響應。不阻塞地返回異步請求
我的要求是在每個請求執行後立即返回響應。
有人可以指出我的解決方案。
<?php
$price = urlencode("select * from html where url=\"http://www.flipkart.com/karwar- cuisine-traditional-recipes-small-coastal-town-karnataka/p/itmdfrx4z4erg9ya?pid=9788179917558\" and xpath=\"//span[contains(@class,'pprice')]/text()\"");
$desc = urlencode("select * from html where url=\"http://www.flipkart.com/karwar-cuisine-traditional-recipes-small-coastal-town-karnataka/p/itmdfrx4z4erg9ya?pid=9788179917558\" and xpath=\"//div[@class='item_desc_text line']\"");
$author = urlencode("select * from html where url=\"http://www.flipkart.com/karwar-cuisine-traditional-recipes-small-coastal-town-karnataka/p/itmdfrx4z4erg9ya?pid=9788179917558\" and xpath=\"//div[contains(@class,'secondary-info')]//a/text()\"");
$title = urlencode("select * from html where url=\"http://www.flipkart.com/karwar-cuisine-traditional-recipes-small-coastal-town-karnataka/p/itmdfrx4z4erg9ya?pid=9788179917558\" and xpath=\"//div[contains(@class,'mprod-summary-title')]//h1/text()\"");
$url1 = "https://query.yahooapis.com/v1/public/yql?q={$price}&format=json";
$url2 = "https://query.yahooapis.com/v1/public/yql?q={$desc}&format=json";
$url3 = "https://query.yahooapis.com/v1/public/yql?q={$author}&format=json";
$url4 = "https://query.yahooapis.com/v1/public/yql?q={$title}&format=json";
$nodes = array(
$url1,
$url2,
$url3,
$url4
);
$node_count = count($nodes);
$curl_arr = array();
$master = curl_multi_init();
for ($i = 0; $i < $node_count; $i++) {
$url = $nodes[$i];
$curl_arr[$i] = curl_init($url);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($master, $curl_arr[$i]);
}
do {
curl_multi_exec($master, $running);
} while ($running > 0);
for ($i = 0; $i < $node_count; $i++) {
$results[] = curl_multi_getcontent($curl_arr[$i]);
}
print_r($results);
?>