programing

PHP cURL vs file_get_contents

itsource 2022. 11. 23. 20:57
반응형

PHP cURL vs file_get_contents

REST API에 액세스 할 때 이 두 개의 코드 조각은 어떻게 다릅니까?

$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');

그리고.

$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);

둘 다 같은 결과를 낳는다고 판단했을 때

print_r(json_decode($result))

file_get_contents()단순한 드라이버입니다.헤더, HTTP 요구 방식, 타임아웃, cookiejar, 리다이렉트 및 기타 중요한 것이 중요하지 않은 단순한 GET 요구에 적합합니다.

fopen()stream context 또는 setopt를 사용한cURL은 생각할 수 있는 모든 비트와 옵션을 갖춘 파워드릴입니다.

게다가 최근 몇 개의 웹사이트 해킹으로 인해 우리는 사이트를 더 보호해야 했습니다.이렇게 함으로써 file_get_contents가 동작하지 않는 것을 알 수 있었습니다.여기서는 컬이 동작합니다.

100%는 아니지만, 이 php.ini 설정이 file_get_contents 요청을 차단했을 수 있습니다.

; Disable allow_url_fopen for security reasons
allow_url_fopen = 0

어느 쪽이든, 이제 우리의 코드는 컬과 함께 작동합니다.

이것은 오래된 주제이지만 나의 API에 대한 마지막 테스트에서는 cURL이 더 빠르고 안정적입니다.cURL이 2배 빠른 1.4~1.9초만 필요로 하는 경우 큰 요청의 file_get_contents가 5초 이상 필요할 수 있습니다.

여기에 GET 및 receive JSON 콘텐츠만 보낸다는 메모를 하나 추가해야 합니다.cURL을 올바르게 셋업하면, 훌륭한 응답을 얻을 수 있습니다.cURL 에 송신할 필요가 있는 것과 수신할 필요가 있는 것을 「알려 주세요」라고 하는 것만으로 끝입니다.

검사에서 다음 설정을 수행합니다.

$ch =  curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
$result = curl_exec($ch);

이 요청은 최대 0.10초 이내에 데이터를 반환합니다.

언급URL : https://stackoverflow.com/questions/11064980/php-curl-vs-file-get-contents

반응형