我遇到了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);
?>
答案 0 :(得分:3)
好的。您没有将CURLOPT_RETURNTRANSFER
设置为true
:将转移作为字符串返回,而不转到stdout
(curl-setopt#CURLOPT_RETURNTRANSFER)。变化:
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1 );
要将内容保存到变量,您应该使用curl-multi-getcontent。