Как я могу отправлять данные GET на несколько URL одновременно с помощью cURL?

Мои извинения, я действительно задавал этот вопрос несколько раз, но так и не понял ответы.

Вот мой текущий код:

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 

То, что я делаю здесь, принимает URL-адреса из базы данных MySQL ($ resultSet ['url']), добавляя к нему дополнительные переменные, только некоторые данные GET ($ fullcurl) и просто запрашивая страницы. Это запустит скрипт, запущенный на этих страницах, и это все, что должен сделать этот скрипт, запускает эти сценарии. Ему не нужно возвращать какой-либо результат. Просто загрузите страницу достаточно долго, чтобы запустить скрипт.

Однако в настоящее время он загружает каждый URL (в настоящее время 11) по одному за раз. Мне нужно загрузить их все одновременно. Я понимаю, что мне нужно использовать curl_multi_ , но я не имею ни малейшего представления о том, как работают функции cURL, поэтому я не знаю, как изменить свой код на использование curl_multi_ в цикле while.

Поэтому мои вопросы:

Как я могу изменить этот код для одновременного загрузки всех URL-адресов? Пожалуйста, объясните это и не просто дайте мне код. Я хочу знать, что делает каждая индивидуальная функция. Будет ли curl_multi_exec работать даже в цикле while, поскольку цикл while просто отправляет каждую строку по одному?

И, конечно же, любые ссылки, руководства, руководства по функциям cURL были бы приятными. Предпочтительно не столько от php.net, сколько в то время, как хорошо справляется с синтаксисом, его просто немного сухо и не очень хорошо с объяснениями.

EDIT: Okay 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. 

Solutions Collecting From Web of "Как я могу отправлять данные GET на несколько URL одновременно с помощью cURL?"

В вашем цикле while вам нужно сделать следующее для каждого URL-адреса:

  • создайте ресурс curl, используя curl_init ()
  • задать параметры ресурса curl_setopt (..)

Затем вам нужно создать несколько ручек curl с помощью curl_multi_init () и добавить все предыдущие отдельные ресурсы завитка, используя curl_multi_add_handle (…)

Затем, наконец, вы можете сделать curl_multi_exec (…).

Хороший пример можно найти здесь: http://us.php.net/manual/en/function.curl-multi-exec.php