Я пытаюсь получить 10 веб-страниц одновременно.
Я использую curl_multi.
Однако я получаю ошибку 503 (слишком много запросов) на большинстве загруженных веб-страниц. Как я могу это исправить?
Вот скрипт php, который я запустил. http://pastebin.com/HhrffciC
Вы можете запустить его на любом сервере с поддержкой php.
Вот как выглядел вывод на моей машине. http://i.imgur.com/dhnXJwz.jpg
Есть библиотека под названием ParallelCurl это может позволить вам контролировать количество одновременных запросов. Сценарий ниже устанавливает максимум до 5 и просто отправляет серию запросов GET на URL-адреса в вашем коде. Если это показывает 503 ошибки для вас (это не для меня), вы можете уменьшить $max_requests
к вашим потребностям.
<?php
require __DIR__ . '/parallelcurl.php';
function on_request_done($content, $url, $ch, $search) {
echo $content;
}
$data = array(
'http://www.codechef.com/status/CLETAB,tacoder',
'http://www.codechef.com/status/CRAWA,tacoder',
'http://www.codechef.com/status/EQUAKE,tacoder',
'http://www.codechef.com/status/MOU2H,tacoder',
'http://www.codechef.com/status/PRGIFT,tacoder',
'http://www.codechef.com/status/PUSHFLOW,tacoder',
'http://www.codechef.com/status/REVERSE,tacoder',
'http://www.codechef.com/status/SEASHUF,tacoder',
'http://www.codechef.com/status/SIGFIB,tacoder',
'http://www.codechef.com/status/TSHIRTS,tacoder'
);
$max_requests = 5;
$parallel_curl = new ParallelCurl($max_requests);
foreach ($data as $url) {
$parallel_curl->startRequest($url, 'on_request_done');
}
$parallel_curl->finishAllRequests();
GitHub README объясняет, как использовать библиотеку дальше.
Других решений пока нет …