Как предотвратить ошибку 503 при использовании curl_multi

Я пытаюсь получить 10 веб-страниц одновременно.

Я использую curl_multi.

Однако я получаю ошибку 503 (слишком много запросов) на большинстве загруженных веб-страниц. Как я могу это исправить?

Вот скрипт php, который я запустил. http://pastebin.com/HhrffciC

Вы можете запустить его на любом сервере с поддержкой php.

Вот как выглядел вывод на моей машине. http://i.imgur.com/dhnXJwz.jpg

0

Решение

Есть библиотека под названием 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 объясняет, как использовать библиотеку дальше.

1

Другие решения

Других решений пока нет …