很抱歉,我已经问了很多次这个问题,但从来没有完全理解答案。
这是我当前的代码:

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数据库中获取url($resultset['url']),在其中附加一些额外的变量,只是一些get data($fullcurl),然后简单地请求页面。这将启动在这些页面上运行的脚本,而这个脚本需要做的就是启动那些脚本。它不需要返回任何输出。只需加载足够长的页面,脚本就可以启动。
不过,目前它一次只能加载一个url(目前是11个)。我需要同时加载所有这些文件。我知道我需要使用curl_multi_u,但我对curl函数的工作原理一窍不通,所以我不知道如何在一个while循环中更改代码以使用curl_multi_u。
所以我的问题是:
如何更改此代码以同时加载所有URL?请解释一下,不要只给我密码。我想知道每个函数的具体功能。curl_multi_exec甚至会在while循环中工作吗,因为while循环只是一次发送一行?
当然,任何关于curl函数的参考、指南和教程都会很好。最好不要太依赖php.net,因为虽然它很好地给出了语法,但它只是有点枯燥,不太适合解释。
编辑:好的,扎夫,这是我现在的代码:
        $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.

最佳答案

在while循环中,需要对每个url执行以下操作:
使用curl_init()创建curl资源
按curl设置资源选项
然后,您需要使用curl_multi_init()创建一个多curl句柄,并使用curl_multi_add_handle(…)添加前面的所有单独curl资源。
最后你可以做curl_multi_exec(…)。
这里有一个很好的例子:http://us.php.net/manual/en/function.curl-multi-exec.php

关于php - 如何使用cURL同时将GET数据发送到多个URL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2713876/

10-12 16:45