抱歉,我实际上多次问过这个问题,但从未完全理解答案。
这是我当前的代码:
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 个)。我需要同时加载所有这些。我知道我需要使用curl_multi_,但我对 cURL 函数如何工作一无所知,所以我不知道如何更改我的代码以使用curl_multi_在 while 循环中。
所以我的问题是:
如何更改此代码以同时加载所有 URL?请解释一下,而不仅仅是给我代码。我想知道每个单独的函数到底做什么。由于 while 循环只是一次发送每一行,curl_multi_exec 甚至可以在 while 循环中工作吗?
当然,任何有关 cURL 函数的参考、指南和教程也很好。最好不要太多来自 php.net,因为虽然它很好地为我提供了语法,但它只是一个little干燥而且解释不太好。
EDIT:好的,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.