동시 요청 수를 조절할 수있는 ParallelCurl 라이브러리가 있습니다. 아래 스크립트는 최대 값을 5로 설정하고 코드의 URL에 일련의 GET 요청을 보냅니다. 이 메시지가 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는 라이브러리 사용 방법을 자세히 설명합니다.
접촉하려는 서버가 여러 요청을 동시에 보내지 않는 것처럼 보입니다 (실제로 무력 공격을 막기 위해 현명합니다). 요청을 한 번에 하나씩 시도해보십시오. – wavemode
답장을 감사드립니다. 그렇습니다. 문제는 내가 동시에 10 웹 페이지를 가져오고 싶습니다. 만약 내가 하나 하나씩하면 15-20 초가 걸리므로, 매분이 스크립트를 실행할 필요가 있기 때문에 많은 시간이 걸린다. curl_multi 함수를 구성하여 지연 요청을 실행하여 서버가 무차별 적으로 강제로 실행한다고 생각하지 않는지 궁금합니다. 같은 것을 성취하는 다른 방법도 인정 될 것이다. – tacoder
json 데이터 만 반환 할 것이므로 PHP가 뇌에 통증이 생길 수 있으므로 단지 다른 언어를 사용하고 처리 할 수 있습니다. 그 어떤 포인터도 감사하겠습니다. – tacoder