나는 PHP CURL을 사용하여 과도한로드가있는 사이트를 구문 분석합니다 (이 사이트는 브라우저에서 거의 열리지 않습니다). 결과에는 서버 응답 코드 503 또는 0 (아무 것도 없음)이 있습니다. 어쩌면 정상적인 서버 응답을 얻으려는 조언이나 CURL 기능을 말해 줄 수 있습니까?로드가 많은 사이트를 구문 분석 할 때 PHP CURL을 사용합니까?
내 CURL 옵션이있다 :
$options = array(
CURLOPT_REFERER => $url,
CURLOPT_TIMEOUT => 1800,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HEADERFUNCTION => "curlHeaderCallback",
CURLOPT_COOKIE => Cookies::arrayToString(Cookies::instance()->load()),
CURLOPT_USERAGENT => "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50",
CURLOPT_HTTPHEADER => $headers
);
문제는 내가 페이지 코드와 응답을받을 수 없다는 것입니다.
2 가지 변형이 있습니다. 1. 서버가 응답하지 않았습니다. 2. 서버의 대답에서 코드 503 "서버 과부하"페이지가 표시됩니다.
CurlHeaderCallback() 코드 :
`function curlHeaderCallback($ch, $str)
{
if (strncmp($str, "Set-Cookie:", 11) === 0)
{
$cookie = trim(substr($str, 11));
list($cookie, $options) = explode(";", $cookie, 2);
list($key, $value) = explode("=", $cookie, 2);
Cookies::instance()->set($key, $value);
}
if (trim($str) == "")
{
curl_setopt($ch, CURLOPT_COOKIE, Cookies::arrayToString(Cookies::instance()->load()));
}
return (strlen($str));
}`
내 행동
은 다음과 같습니다$response = curl_exec($ch); $info = curl_getinfo($ch);
내가 응답 및 $info["http_code"]
또는 두 번째 변종이 없다 : 응답 내가 페이지 503 코드와 $info["http_code"] = 503
아를 하나 더 선택할 수 있습니다 :
CURLOPT_CONNECTTIMEOUT => 30
다이어그램은 여기에 있습니다 : 당신은 단지 HTTP 코드 후 경우 http://s61.radikal.ru/i172/1212/d6/33471472ee8e.png
무엇이 문제입니까? 페이지를 가져 오려고 할 때 시간 초과가 발생했다는 말입니까? '$ headers'에 무엇이 있습니까? 'curlHeaderCallback()'의 코드는 무엇입니까? –
CurlHeaderCallback() 코드 : '기능 curlHeaderCallback ($ ch를, $ str을) { 경우 (strncmp ($ STR, "설정 - 쿠키", 11) === 0) { $ 쿠키 = 트림 (SUBSTR ($ str, 11)); list ($ 쿠키, $ 옵션) = 폭발 (";", $ 쿠키, 2); list ($ key, $ value) = 폭발 ("=", $ 쿠키, 2); 쿠키 : instance() -> set ($ key, $ value); } if (trim ($ str) == "") { curl_setopt ($ ch, CURLOPT_COOKIE, Cookies :: instance() -> load()))); } return (strlen ($ str)); } ' – GrinderZ
코멘트에 CurlHeaderCallback()을 게시하는 대신 원래 게시물을 편집하여 다시 추가 할 수 있습니다. 쉽게 읽을 수 있으며 다른 사람들은 쉽게 찾을 수 있습니다. –