URL의 배열을 입력으로받는 함수가 있습니다. URL의 정확성을 확인했으며 완벽하게 반복 할 수 있습니다. Curl이 올바른 페이지를 다운로드하고 있음을 curl_getinfo를 사용하여 확인했습니다. 그러나 curl (html)의 출력은 모든 페이지에서 동일합니다.PHP Curl 다운로드 문제
다음과 $urls = array();
$urls = getpages($mainpage);
print_r($urls);
foreach($urls as $link) {
echo $link. '<br><br><br>';
$circdl = my_curl($link);
echo $circdl. '<br><br><br>';
$circdl = NULL;
}
URL의의 출력 배열 될 때 :
Array ([0] => http://www.site.com/savings/viewcircular?promotionId=81498&sneakpeek=¤tPageNumber=1 [1] => http://www.site.com/savings/viewcircular?promotionId=81498&sneakpeek=¤tPageNumber=2
$ 링크도 curl_getinfo에서 컬처럼 적절하게 출력 여기 내 코드입니다. 나는이 루프를 통해 URL의 다른 배열을 실행하고 그들은 잘 작동하지만 여기에 문제가 URL (앰퍼샌드) 형식으로 의심된다. 나는 정말로이 페이지들이 예상대로 다운로드되지 않는 이유를 잘 모르겠다.
function my_curl($url)
{
$timeout=10;
$error_report=TRUE;
$curl = curl_init();
$cookiepath = drupal_get_path('module','mymodule'). '/cookies.txt';
// HEADERS AND OPTIONS APPEAR TO BE A FIREFOX BROWSER REFERRED BY GOOGLE
$header[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // BROWSERS USUALLY LEAVE BLANK
// SET THE CURL OPTIONS - SEE http://php.net/manual/en/function.curl-setopt.php
curl_setopt($curl, CURLOPT_URL, $url );
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' );
curl_setopt($curl, CURLOPT_HTTPHEADER, $header );
curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com' );
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate' );
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE );
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiepath);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiepath);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout );
// RUN THE CURL REQUEST AND GET THE RESULTS
$htm = curl_exec($curl);
// Check for page request
//$info = curl_getinfo($curl);
//echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
// ON FAILURE HANDLE ERROR MESSAGE
if ($htm === FALSE)
{
if ($error_report)
{
$err = curl_errno($curl);
$inf = curl_getinfo($curl);
echo "CURL FAIL: $url TIMEOUT=$timeout, CURL_ERRNO=$err";
var_dump($inf);
}
curl_close($curl);
return FALSE;
}
// ON SUCCESS RETURN XML/HTML STRING
curl_close($curl);
return $htm;
}
무엇 매우 흥미로운 것은 내가 실행하는 경우이 있다는 것입니다 : 여기
는 my_curl 기능의echo my_curl('http://www.site.com/savings/viewcircular?promotionId=81498&sneakpeek=¤tPageNumber=2')
출력이 정확한지 !! ?? :(
도움을 주셔서 감사합니다.
'my_curl()'메소드의 코드를 관련 코드가있는 함수처럼 보이게 게시 할 수 있습니까? – newfurniturey
방금 두 페이지로 배열을 생성하고 루프를 통해 실행하고 괜찮 았어. 볼 수있는 유일한 차이점은이 $ http://www.site.com 대신 http://www.site.com/savings/viewcircular?promotionId=81498&sneakpeek=¤tPageNumber=1을 보여주는 $ link 변수입니다./savings/viewcircular? promotionId = 81498 & sneakpeek = & currentPageNumber = 1. 나는 이것이 인코딩 문제라고 생각한다. –