ما هي أسهل طريقة لاستخدام الأمر رأس من HTTP في PHP؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

وأود أن ترسل الأمر الرأس من نقل النص التشعبي بروتوكول الخادم في PHP لاسترداد رأس، ولكن ليس المحتوى أو URL. كيف أفعل ذلك بطريقة فعالة؟

واستخدام الحالات ربما الأكثر شيوعا هو للتحقق من وصلات الإنترنت الميتة. لهذا أنا فقط بحاجة لرمز رد طلب HTTP وليس محتوى الصفحة. الحصول على صفحات الويب في PHP يمكن أن يتم بسهولة باستخدام file_get_contents("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);

وحتى أسهل من حليقة - مجرد استخدام PHPget_headers()function التي تقوم بإرجاع مجموعة من المعلومات عن رأس أي URL الذي تحدده. وسيلة سهلة حقيقية أخرى للتحقق من وجود ملف بعيد هو usefopen()and محاولة لفتح URL في وضع للقراءة (ستحتاج إلى تمكين allow_url_fopen لهذا).

وانظروا فقط إلى دليل PHP لهذه الوظائف، كل شيء هناك.

ويبدو مثل الكمثرى له ما يلي:

http://pear.php.net/manual /en/package.http.http.head.php

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top