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
'programing' 카테고리의 다른 글
무중단 새로고침 시 Vuex 모듈 상태가 업데이트되지 않음 (0) | 2022.11.23 |
---|---|
vuetify의 v-module 높이가 100%가 되지 않음 (0) | 2022.11.23 |
Java를 사용하여 JSONArray 항목 구성원 액세스 (0) | 2022.11.23 |
PHP 스크립트를 디버깅하려면 어떻게 해야 합니까? (0) | 2022.11.23 |
사용자의 mysql 서버에 원격 액세스 권한을 부여하는 방법 (0) | 2022.11.23 |