fopen bazı URL'ler için çalışmıyor mu?

2 Cevap

Bazı adresler okuma sorunlar yaşıyorum. Ben (böyle bir URL bir örnek aşağıda verilmiştir) benim tarayıcıda görüntülemek gibi adresler ile yanlış bir şey vardır:

http://www.bloomberg.com/apps/news?pid=20601087&sid=a2BhXFMpbb5M

Benim kod böyle Fopen kullanıyorum:

public static function grokPage($path)
{
    $data = '';
    $file = fopen($path, "r");

    if ($file)
    {
        while (!feof($file))
            $data .= fgets($file, 1024);
    }
    return $data;
}

Ben almak hatadır:

Uyarı: fopen (http://www.bloomberg.com/apps/news?pid=20601087&sid=a2BhXFMpbb5M) [0function.fopen0]: failed to open stream: Yönlendirme sınıra ulaşıldığında, xxx_filename.php içinde iptal

PHP fopen doc, ben doğru işlevini kullanıyorum görünüyor. Herkes özyineleme uyarı ve nasıl düzeltebilirim anlamak mı?

2 Cevap

Bu hedef sayfa max_redirects ayarı belirtilen olandan (muhtemelen Location: başlığı kullanılarak) farklı adreslere daha yönlendirmeleri dönen demektir.

Bu very good article on how to fetch web pages using the fopen wrappers. It contains an example on how to change the max_redirects ayarı gibi görünüyor.

Biliyorsunuz onların hüküm ve koşulların ihlali olabilir otomatik veri kazıma, algılar çünkü Bloomberg bilerek seni kapatılıyor olsa da, olabilir.

"Ulaştı yönlendirme sınırı" uzak site Yer izledi ki, bir Konum başlığı geri gönderme ve daha sonra yeniden yönlendirilen konumu tekrar Yer başlığı verdi anlamına gelir. Bu süreç yönlendirmeler (Yer başlıkları) bazı önceden tanımlanmış sayıda ulaşılıncaya kadar devam etti.

Bu site kasten başka bir yerde yeniden yönlendirmek için çalışıyor olasıdır, ama bir döngü neden olan bir hata var.

Eğer kullanıcı aracısı dizesi gibi şeyler belirlemenizi sağlar birini - Sen URL almak için başka bir yol çalışırken düşünmelisiniz. curl, çirkin ama iyi çalışıyor deneyin. Yerine PHP veya düzelene IE6 veya Firefox gibi saklayarak sahipsiniz.

Edit: Pekka en comment kullanıcı aracısı dizesini ayarlamak için nasıl dahil olmak üzere fopen sarma, kullanma ile ilgili bilgi bir bağlantı içerir.