Мои извинения, я действительно задавал этот вопрос несколько раз, но так и не понял ответы.
Вот мой текущий код:
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, сколько от того, что он дает мне синтаксис, он просто маленький сухой и не очень хороший с объяснениями.
РЕДАКТИРОВАТЬ: Хорошо, 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.