1. 컬 요청의 기본 단계 :
(1) 초기화
(2) URL을 포함한 옵션을 설정합니다
(3) HTML 문서 컨텐츠를 실행하고 얻습니다
(4) 컬 핸들을 해제합니다
코드 사본은 다음과 같습니다.
<? php
// 1. 초기화
$ ch = curl_init ();
// 2. URL을 포함한 옵션을 설정합니다
curl_setopt ($ ch, curlopt_url, "http://www.cnblogs.com/it-cen/");
// curl_exec ()가 얻은 정보를 직접 출력하는 대신 파일 스트림으로 반환합니다.
curl_setopt ($ ch, curlopt_returntransfer, 1);
// 시작시 헤더 파일 정보가 데이터 스트림으로 출력됩니다.
curl_setopt ($ ch, curlopt_header, 1);
// 3. HTML 문서 컨텐츠를 실행하고받습니다
curl_exec ($ ch);
// 4. 손잡이를 해제하십시오
curl_close ($ ch);
echo $ ch;
?>
참고 : 두 번째 단계는 가장 중요합니다. 즉 Curl_SetOpt () 함수
오류를 확인하기 위해 문을 추가 할 수 있습니다. 여기서 우리는 빈 출력과 부울 값 false를 구별하는 "=== false"를 사용하는 데주의를 기울여야합니다.
코드 사본은 다음과 같습니다.
$ output = curl_exec ($ ch);
if ($ output === false) {
echo "curl error :". curl_error ($ ch);
}
curl_getInfo () 함수는 CURL이 실행 된 후이 요청에 대한 정보를 반환합니다. 이는 디버깅 및 문제 해결에 유용합니다.
코드 사본은 다음과 같습니다.
curl_exec ($ ch);
$ info = curl_getInfo ($ ch);
echo '<fre>';
print_r ($ info);
echo '</pre>';
반환 된 데이터
코드 사본은 다음과 같습니다.
정렬
(
[url] => http://www.cnblogs.com/it-cen/
[content_type] => text/html; charset = utf-8
[http_code] => 200
[header_size] => 312
[request_size] => 61
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[Total_Time] => 0.172
[namelookup_time] => 0.016
[connect_time] => 0.063
[pretransfer_time] => 0.063
[size_upload] => 0
[size_download] => 14658 <span style = "color : #ff0000;"> // 요청 된 데이터 크기 </span>
[speed_download] => 85220
[speed_upload] => 0
[download_content_length] => 14658
[upload_content_length] => 0
[startTransfer_Time] => 0.125
[redirect_time] => 0
[certinfo] => 배열
(
))
[redirect_url] =>
))
2.이 정보는 디버깅에 매우 유용합니다 . 예를 들어, Curl Crawling의 경우, 크롤링 데이터는 종종 네트워크 이유로 인해 발생할 수 있으며, 획득 한 데이터를 통해 파일을 계산 한 다음 얻은 데이터와 비교할 수 있습니다. 크기가 같으면 다운로드가 정확하다고 결정됩니다. 그렇지 않으면 반복적 인 시도를합니다.
크롤링 이미지의 예를 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
<? php
헤더 ( "내용 유형 : 이미지/png");
// 1. 초기화
$ ch = curl_init ();
// 2. URL을 포함한 옵션을 설정합니다
curl_setopt ($ ch,, curlopt_url, "http://img04.taobaocdn.com/tfscom/tb1omathxxxxxxajxxxxxbfxxx.png");
curl_setopt ($ ch, curlopt_returntransfer, 1);
curl_setopt ($ ch, curlopt_header, 1);
// 3. 실행하고 콘텐츠를 얻으십시오
$ res = curl_exec ($ ch);
// 정보를 얻습니다
$ info = curl_getInfo ($ ch);
// 4. 릴리스 리소스
curl_close ($ ch);
file_put_contents ( "d : /aa.png", $ res);
$ size = filesize ( "d : /aa.png");
if ($ size! = $ info [ 'size_download']) {
Echo "다운로드 된 데이터는 불완전합니다. 다시 다운로드하십시오";
} 또 다른 {
Echo "데이터 완료 다운로드";
}
?>
3. CURL에서 우편 메소드를 사용하여 데이터를 보냅니다
코드 사본은 다음과 같습니다.
<? php
$ ch = curl_init ();
$ data = array ( 'name'=> 'kelly', 'age'=> 27, 'sex'=> 1);
curl_setopt ($ ch, curlopt_url, "http : //localhost.post.php");
curl_setopt ($ ch, curlopt_returntransfer, 1);
// 게시물로 설정합니다
curl_setopt ($ ch, curlopt_post, 1);
// 게시물 변수를 추가합니다
curl_setopt ($ ch, curlopt_postfields, $ data);
$ res = curl_exec ($ ch);
curl_close ($ ch);
echo $ res;
?>
이 방법은 메시지를 시뮬레이션하거나 물을 뿌린 로봇에 앉을 수 있으며 아이디어는 동일합니다.
4. 컬로 파일을 업로드하십시오
코드 사본은 다음과 같습니다.
<? php
// 업로드 된 데이터를 요청합니다
$ data = array ( 'name'=> 'beauty', "ubload"=> "@a.zip");
$ ch = curl_init ();
curl_setopt ($ ch, curlopt_url, "http://127.0.0.1/socket/upload_file.php");
curl_setopt ($ ch, curlopt_returntransfer, 1);
curl_setopt ($ ch, curlopt_post, 1);
curl_setopt ($ ch, curlopt_postfields, $ data);
$ res = curl_exec ($ ch);
curl_close ($ ch);
echo $ res;
?>
참고 : 파일을 보낼 때 파일 이름 앞에 @를 접두사하고 전체 경로를 사용하십시오.
5. 컬 설정 항목
실제로 Curl에는 많은 구성 옵션이 있으며 이러한 옵션은 Curl의 영혼입니다. setopt ()를 통해 설정하면 다음은 몇 가지 일반적이고 중요한 구성 항목을 요약합니다. 앞으로 컬을 사용할 때 독자에게 도움이되기를 바랍니다.
curlopt_autoreferer : 위치에 따라 리디렉션 할 때 :, 참조 : 헤더의 정보가 자동으로 설정됩니다.
curlopt_cookiesession : 활성화되면 Curl은 다른 쿠키를 무시하면서 세션 쿠키를 단단히 통과합니다.
Curlopt_header : 헤더 파일 정보를 데이터 스트림으로 출력
curlopt_infilesize : 업로드 된 파일의 크기를 바이트로 설정
curlopt_maxconnects : 허용되는 최대 연결 수
Curlopt_maxredirs : 최대 HTTP 리디렉션 수를 지정하십시오
Curlopt_cookie : "쿠키 :"HTTP 요청의 일부를 설정하십시오. 여러 쿠키 다음에 세미콜론이 이어지고 세미콜론에 공간이 추가됩니다.
Curlopt_postFields : 모든 데이터는 HTTP 프로토콜에서 "Post"조작을 사용하여 전송되어 전송 될 파일을 보내고 파일 이름은 @ prefix에 의해 접두어가 표시되며 전체 경로가 사용됩니다.
.........
자세한 구성 항목은 PHP 매뉴얼을 참조하십시오.
Curl은 매우 강력하며 PHP에 고유하지 않은 일반 라이브러리입니다.
이 블로그 게시물에서 몇 가지 고전적인 컬 예제를 배우면 독자들이 무언가를 얻을 수 있기를 바랍니다.