Curl Multi Init回显已执行页面的内容

时间:2015-01-25 02:13:49

标签: php curl

我遇到了Curl Multi Init的问题。我试图让它同时访问多个站点,然后将其内容保存到变量中。不幸的是,我无法弄清楚为什么它似乎与每个网站的内容相呼应。例如,如果我告诉它去两个站点,那么该网站的一个内容就是"你好"和另一个人"嘿"它会回应" hellohey" - 不知道为什么会这样。这是我正在使用的代码:

    <?php
// create both cURL resources
$ch1 = curl_init();
$ch2 = curl_init();

// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "http://example1.org/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://example2.org/");
curl_setopt($ch2, CURLOPT_HEADER, 0);

//create the multiple cURL handle
$mh = curl_multi_init();

//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) == -1) {
        usleep(100);
    }
    do {
        $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
}

//close the handles
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

?>

1 个答案:

答案 0 :(得分:3)

好的。您没有将CURLOPT_RETURNTRANSFER设置为true:将转移作为字符串返回,而不转到stdoutcurl-setopt#CURLOPT_RETURNTRANSFER)。变化:

 curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1 );
 curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1 );

要将内容保存到变量,您应该使用curl-multi-getcontent