Görüntü uzaktan URL olup olmadığını kontrol edin

7 Cevap php

Ben kitap ISBN'lere için görüntülerin dinamik URL'leri oluştururken. Ben görüntüler aslında uzak url var olup olmadığını kontrol etmek için PHP ile güvenilir bir yol gerekir. Ben farklı vb PHP kitaplıkları, kıvrılma, çeşitli yaklaşımlar çalıştı, ama bunların hiçbiri iyi çalışıyor, bazıları düpedüz yavaş. Ben oluşturmak (ve kontrol edin!) Benim veritabanında her kitap için yaklaşık 60 URL'LER ihtiyaç olduğu gerçeği göz önüne alındığında, bu çok büyük bir bekleme süresi olduğunu. Herhangi bir ipucu?

7 Cevap

function checkRemoteFile($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    // don't download content
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(curl_exec($ch)!==FALSE)
    {
        return true;
    }
    else
    {
        return false;
    }
}

- Host kıvrılmasını destekliyorsa> bu hızlı yoludur

Burada "kolay" yolu var - bir çok en azından, bir HEAD isteği oluşturmak ve bu bir görüntü emin olmak için çıkan içerik türünü kontrol etmek gerekir. Bu hesabı mümkün yönlendirme sorunları içine almıyor. kıvırmak buraya gitmek için yoludur.

Sen kullanabilirsiniz curl. Sadece true kıvırmak seçeneği CURLOPT_NOBODY ayarlayın. Bu gövde bilgileri atlayın ve sadece (böylece http kodu da) başını alacak. Sonra, bir doğru / yanlış tipi çek içine tüm bu süreci açmak için CURLOPT_FAILONERROR kullanabilirsiniz

Ben benim gayrimenkul resmi takibi için bu yapıyor ...

$im = @imagecreatefromjpeg($pathtoimg);
if($im)
  imagedestroy($im); // dont save, just ack...
elseif(!$missing[$inum])
  $img404arr[] = $inum;

Bu görüntülerden biri için yaklaşık 0,3 saniye alıyor, gerçek görüntü indirirken daha hızlı 'görünüyor' olduğunu ort 100k.

Ben bir şey indirirken olmadan 404 vs 200 olsun ister ben sadece bir başlık denetimi yapmak ve okumak isterdim. Herkes bu kullanışlı var?

Görüntüleri tüm aynı uzak sunucuda (veya aynı ağda) mevcut ise, görüntü dosyası için dosya sistemini kontrol ve görüntü var ya da wheter gösteren bir bool değer dönecektir sunucuda bir web hizmeti çalıştırabilir .

Muhtemelen bu noktada sessiz noktası var, ama bu benim için çalışıyor:

function is_webfile($webfile)
{
 $fp = @fopen($webfile, "r");
 if ($fp !== false)
  fclose($fp);

 return($fp);
}