PHP에서 HTTP의 헤드 명령을 사용하는 가장 쉬운 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1545432

  •  20-09-2019
  •  | 
  •  

문제

하이퍼 텍스트 전송 프로토콜의 헤드 명령을 PHP의 서버로 보내기 위해 컨텐츠 나 URL이 아닌 헤더를 검색하고 싶습니다. 효율적인 방법으로 어떻게해야합니까?

아마도 가장 일반적인 사용 사례는 죽은 웹 링크를 확인하는 것입니다. 이를 위해서는 페이지 컨텐츠가 아닌 HTTP 요청의 응답 코드 만 있으면됩니다. PHP에서 웹 페이지를 얻는 것은 쉽게 사용할 수 있습니다. file_get_contents("http://..."), 그러나 링크를 확인하기 위해 전체 페이지 컨텐츠 / 이미지 / uthern을 다운로드하므로 이것은 실제로 비효율적입니다.

도움이 되었습니까?

해결책

CURL의 대안으로 HTTP 컨텍스트 옵션을 사용하여 요청 방법을 설정할 수 있습니다. HEAD. 그런 다음 이러한 옵션으로 (HTTP 래퍼) 스트림을 열고 메타 데이터를 가져 오십시오.

$context  = stream_context_create(array('http' =>array('method'=>'HEAD')));
$fd = fopen('http://php.net', 'rb', false, $context);
var_dump(stream_get_meta_data($fd));
fclose($fd);

또한보십시오:
http://docs.php.net/stream_get_meta_data
http://docs.php.net/context.http

다른 팁

당신은 이것을 깔끔하게 할 수 있습니다 곱슬 곱슬하다:

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");

// This changes the request method to HEAD
curl_setopt($ch, CURLOPT_NOBODY, true);

// grab URL and pass it to the browser
curl_exec($ch);

// Edit: Fetch the HTTP-code (cred: @GZipp)
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

// close cURL resource, and free up system resources
curl_close($ch);

컬보다 더 쉽습니다. PHP를 사용하십시오get_headers()지정할 모든 URL에 대한 모든 헤더 정보 배열을 반환하는 함수. 원격 파일 존재를 확인하는 또 다른 쉬운 방법은 사용하는 것입니다.fopen()읽기 모드에서 URL을 열어야합니다 (이를 위해 allow_url_fopen을 활성화해야 함).

이러한 기능은 PHP 매뉴얼을 확인하십시오. 모든 것이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top