2009-10-09 19 views
8

मैं हेडरटेक्स्ट ट्रांसफर प्रोटोकॉल के हेड कमांड को हेडर पुनर्प्राप्त करने के लिए PHP में किसी सर्वर पर भेजना चाहता हूं, लेकिन सामग्री या यूआरएल नहीं। मैं इसे एक कुशल तरीके से कैसे कर सकता हूं?PHP में HTTP के HEAD कमांड का उपयोग करने का सबसे आसान तरीका क्या है?

शायद सबसे आम उपयोग-केस मृत वेब लिंक की जांच करना है। इसके लिए मुझे केवल HTTP अनुरोध के उत्तर कोड की आवश्यकता है, न कि पृष्ठ सामग्री। PHP में वेब पेज प्राप्त करना आसानी से file_get_contents("http://...") का उपयोग करके किया जा सकता है, लेकिन लिंक की जांच के उद्देश्य से, यह वास्तव में अक्षम है क्योंकि यह पूरे पृष्ठ की सामग्री/छवि/जो कुछ भी डाउनलोड करता है।

उत्तर

15

एक विकल्प कर्ल करने के लिए आप http संदर्भ विकल्पों का उपयोग कर सकते हैं स्थापित करने के लिए के रूप में HEAD पर अनुरोध विधि। फिर इन विकल्पों के साथ एक (http wrapper) स्ट्रीम खोलें और मेटा डेटा प्राप्त करें।

$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

+1

मैं इस समाधान को कर्ल का उपयोग करके पसंद करता हूं, क्योंकि मुझे अंतर्निहित कार्यों का उपयोग करना पसंद है। शायद कोई और हर संभावना के प्रदर्शन पर टिप्पणी कर सकता है? – fuenfundachtzig

+0

ध्यान दें कि यह '401' प्रतिक्रिया कोड के लिए एक त्रुटि फेंक देगा, जबकि कर्ल आपको वास्तविक प्रतिक्रिया प्रदान करता है। –

+0

'stream_context_create()' का उपयोग 'file_get_contents()' के साथ भी किया जा सकता है। हो सकता है कि 'get_headers() 'HEAD के अनुरोध के तरीके पर' stream_context_set_default() 'के साथ बहुत बेहतर है। Http://php.net/manual/es/function.get-headers.php – cybmeta

17

आप cURL साथ बड़े करीने से ऐसा कर सकते हैं:

<?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); 
3

भी कर्ल की तुलना में आसान है - बस पीएचपी get_headers() समारोह जो किसी भी आपके द्वारा निर्दिष्ट URL के लिए सभी शीर्ष लेख जानकारी की एक सरणी देता है का उपयोग करें। और दूरस्थ फ़ाइल अस्तित्व की जांच करने का एक और वास्तविक तरीका fopen() का उपयोग करना है और यूआरएल को रीड मोड में खोलने का प्रयास करें (आपको इसके लिए allow_url_fopen को सक्षम करने की आवश्यकता होगी)।

बस इन कार्यों के लिए PHP मैन्युअल देखें, यह सब कुछ है।

+1

'get_headers()' वास्तव में 'GET' अनुरोध भेज देगा जब तक कि आप इसे पहले न करें: 'stream_context_set_default (array (' http '=> सरणी ('विधि' => 'हेड'))); ' – Octopus

संबंधित मुद्दे

 संबंधित मुद्दे