HTTP yanıt başlığını getir / PHP ile durumu yönlendirme

1 Cevap php

Orada hej

Ben şu anda oldukça büyük bir URL sayısını ve yönlendirme durumunu izlemek için bir PHP tabanlı Aracı üzerinde çalışıyorum. Ben mevcut yönlendirme kodu ve konumunu ayıklamak için HTTP yanıt başlıklarının içeriğini almak için en iyi yolu bulmak oldukça biraz zaman geçirdim. Bu şu anda böyle yapılır:

$resource = fopen( $url, 'r' );
$metadata = stream_get_meta_data( $resource );
$metadata = $metadata['wrapper_data'];

// Looping through the array to find the necessary fields

Bu ben takip ediyorum URL'lerin% 95 çalışır. Daha bir kaç ben "Bu web sitesi burada taşındı" gibi bir şey ihtiva ettiğinden yönlendirme idam önce gerçek HTML web döner ayrıştırma bunu çözdük. Bu çok güçlü bir çözüm olarak görünmüyor, ancak bazı durumlarda yardımcı oldu.

Bu hala otomatik olarak kontrol edemez URL'lerin bir dizi bana bırakır.

Gibi araçları Ask Apache HTTP Headers Tool daha güvenilir gibi görünüyor ve ne yönlendirme bilgi edinmek için daha iyi bir yolu olabilir merak ediyorum?

1 Cevap

Ayrıca, bu gibi görünüyor tüm başlıklarını alır kıvırmak, kısa bir örnek deneyebilirsiniz:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://stackoverflow.com');
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_exec($ch);

function read_header($ch, $string) {
    print "Received header: $string";
    return strlen($string);
}

Çıktı:

[~]> php headers.php 
Received header: HTTP/1.1 200 OK
Received header: Cache-Control: private
Received header: Content-Type: text/html; charset=utf-8
Received header: Expires: Mon, 31 Aug 2009 09:38:45 GMT
Received header: Server: Microsoft-IIS/7.0
Received header: Date: Mon, 31 Aug 2009 09:38:45 GMT
Received header: Content-Length: 118666
Received header:

Tabii ki, bu gibi iyi çalışır fsockopen sonra, istediğiniz sadece başlıkları olduğunu. Sadece başlıkları değil, içerik istiyorum çünkü yerine GET dışında, siz, HEAD kullanmalısınız.

Ayrıca, kıvırmak çalışmaları yanı sıra https url-s için (sizi sağlanan ssl desteği ile derledik).