非常抱歉,我曾多次询问这个问题,但从未真正理解答案。
这是我的当前代码:
while($resultSet = mysql_fetch_array($SQL)){
$ch = curl_init($resultSet['url'] . $fullcurl); //load the urls and send GET data
curl_setopt($ch, CURLOPT_TIMEOUT, 2); //Only load it for two seconds (Long enough to send the data)
curl_exec($ch); //Execute the cURL
curl_close($ch); //Close it off
} //end while loop
我所做的是从MySQL数据库($resultSet['url'])中取出URL,将一些额外的变量附加到它上面,即一些GET数据($fullcurl),然后请求这些页面。这会启动那些页面上的脚本,这就是这个脚本需要做的,只需启动这些脚本。它不需要返回任何输出,只需加载页面足够长的时间以启动脚本。
然而,目前它每次只加载一个URL(目前为11个)。我需要同时加载所有URL。我知道我需要使用curl_multi_,但我对cURL函数的工作原理毫不了解,因此我不知道如何更改我的代码以在while循环中使用curl_multi_。
所以我的问题是:
我如何更改这段代码以同时加载所有URL?请解释一下,而不只是给我代码。我想知道每个单独的函数究竟是干什么的。curl_multi_exec在while循环中是否有效,因为while循环只是逐行发送而已?
当然,任何关于cURL函数的参考、指南、教程都可以,最好不要来自php.net,因为虽然它做得很好,给我提供了语法,但它有点枯燥,解释得不够好。
编辑: 好的,zaf,以下是我当前的代码:
$mh = curl_multi_init(); //set up a cURL multiple execution handle
$SQL = mysql_query("SELECT url FROM urls") or die(mysql_error()); //Query the shell table
while($resultSet = mysql_fetch_array($SQL)){
$ch = curl_init($resultSet['url'] . $fullcurl); //load the urls and send GET data
curl_setopt($ch, CURLOPT_TIMEOUT, 2); //Only load it for two seconds (Long enough to send the data)
curl_multi_add_handle($mh, $ch);
} //No more shells, close the while loop
curl_multi_exec($mh); //Execute the multi execution
curl_multi_close($mh); //Close it when it's finished.