php脚本执行多个网址?我的脚本不工作

时间:2017-09-24 11:18:58

标签: php curl cron

我想构建一个脚本来一次执行多个url(比如100)。 脚本我使用代码

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "url1");




curl_setopt($ch, CURLOPT_URL, "url2");




curl_setopt($ch, CURLOPT_URL, "url3");
curl_setopt($ch, CURLOPT_URL, "url4");
curl_setopt($ch, CURLOPT_URL, "url15");
curl_setopt($ch, CURLOPT_HEADER, 0);




// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
?>

但是脚本只执行最后两个网址,而不是全部。执行多个网址的正确脚本应该是什么?

1 个答案:

答案 0 :(得分:1)

CURLOPT_URL只设置一个字符串,设置它两次会覆盖以前的值。 您可能正在寻找curl_multi,它可以同时执行多个网址,并且使用起来很麻烦,请查看http://php.net/manual/en/function.curl-multi-exec.php的示例

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

// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "url1");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "url2");
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) {
        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);
相关问题