CURL은 HTTP 요청에 PHP를 사용할 때 일반적으로 사용되고 강력한 도구입니다. 많은 개발자가 CURL을 사용하여 API를 호출하거나 웹 페이지 데이터를 크롤링 할 때 요청을 완료합니다. 그러나 Curl_Close ()를 호출하기 전에 반환 된 데이터가 올바르게 캡처되지 않으면 데이터 손실 또는 오류 처리로 이어질 수 있습니다. 따라서이 기사는 Curl_Close ()를 호출하기 전에 CURL 요청에 의해 반환 된 데이터를 올바르게 캡처하고 처리하는 방법을 자세히 소개합니다.
컬을 사용하는 기본 단계는 다음과 같습니다.
컬 세션을 초기화하십시오.
옵션 설정;
요청을 실행하십시오.
반환 값을 얻으십시오.
세션을 닫으십시오.
예를 들어:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/api/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
이 예에서 $ Response는 원격 서버에서 반환 한 컨텐츠를 저장합니다. Curl_Close ()가 리소스를 석방하고 응답 데이터에 더 이상 액세스하지 않기 때문에 Curl_Close () 호출 전에 반환 값을 얻는 것이 수행되어야합니다 .
데이터가 손상되지 않고 안정적으로 캡처되도록하기 위해 다음 사항에주의를 기울여야합니다.
이것이 가장 중요한 단계입니다. 기본적으로 컬은 결과를 값을 반환하지 않고 표준 출력 (브라우저)으로 직접 출력합니다. 코드를 통해 반환 내용을 추가 처리하려면이 옵션을 설정해야합니다.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
요청을 실행 한 후 반환 값을 판단하는 것이 좋습니다.
$response = curl_exec($ch);
if ($response === false) {
$error = curl_error($ch);
curl_close($ch);
die("cURL 요청이 실패했습니다: $error");
}
이렇게하면 반응이 없거나 잘못된 응답이 잘못된 데이터로 잘못 처리되는 것을 방지합니다.
HTTP 상태 코드가 200인지 여부와 같이 요청이 성공했는지 여부를 결정 해야하는 경우 다음을 사용할 수도 있습니다.
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
판단 논리와 함께 사용 :
if ($httpCode !== 200) {
curl_close($ch);
die("요청이 실패했습니다,HTTP 상태 코드: $httpCode");
}
다음은 반환 된 데이터를 안전하게 캡처하고 프로세스하는 방법을 보여주는 완전한 예입니다.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/api/userinfo");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 선택 과목:시간 초과 설정
$response = curl_exec($ch);
if ($response === false) {
$error = curl_error($ch);
curl_close($ch);
die("요청 오류: $error");
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
die("接口요청이 실패했습니다,상태 코드: $httpCode");
}
// 거래하십시오 JSON 응답
$data = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
die("JSON 분석이 실패했습니다: " . json_last_error_msg());
}
// 샘플 출력
echo "사용자 이름: " . $data['username'];
curl_close () 로 컬 세션을 닫기 전에 다음과 같습니다.
Curlopt_returnTransfer를 사용하여 반환 된 데이터를 얻으십시오.
curl_exec ()가 성공했는지 확인하십시오.
요청이 성공했는지 여부를 결정하기 위해 선택적으로 상태 코드를 얻습니다.
마지막으로 Curl_Close ()가 자원을 해제하도록 호출됩니다.
위의 단계를 통해 모든 CURL 요청이 안전하고 안전하게 처리되도록 할 수 있습니다. 이는 강력한 네트워크 통신 기능을 구축하는 데 특히 중요합니다.