PHP uzak sunucudan dosyaları alınırken gecikmeler Taşıma

1 Cevap php

Ben uzak sunuculardan dosya ve fotoğraflara erişmek için PHP ile çalışıyorum. Ben çoğunlukla file_get_contents () ve kopya () işlevleri kullanıyorum.

Bazen küçük bir metin dosyası veya fotoğrafı erişen neredeyse anlık olduğunu, ancak diğer zamanlarda da aynı tam dosya üzerinde bir dakika "sıkışmış" almak gibi görünüyor. Ve bazen aslında benim komut askıda kalmasına neden olur, ve ben komut Apache durdurmak bile birkaç dakika boyunca kilitli kalır.

Ben internet bağlantıları lapa lapa olabilir gerçeğini kabul etmek için oldukça istekli değilim. PHP set_time_limit () fonksiyonu sadece bir ölümcül hata verir - Benim endişem ben incelikle kurtarmak olduğunu ve Apache kaza kalmamasıdır. Buna ek olarak, akım operasyonları harcanan o zaman komut dosyası çalıştıran zaman katkıda bulunmaz PHP kılavuzda bir not vardır.

Ben nasıl böyle bir bağlantı sorunlarından kurtarmak ve benim senaryom devam etmesine izin verebilir? Ve neden bu asmak için Apache neden olurdu?

Teşekkürler, Brian

1 Cevap

$options = array( 'http' => array(
      'user_agent'    => 'Firefox wannabe',
      'max_redirects' => 1,
      'timeout'       => 10,
  ) );
$context = stream_context_create( $options );
$content = file_get_contents( $url, false, $context );

stream_context_create and HTTP Context Options bir göz atın. Yukarıdaki kod bağlantısı üzerinde bir zaman aşımı süresi belirlenir, ve bir yönlendirme sağlayacaktır.

Bu zaman aşımı ulaşan önlemelidir.

Uzun gecikmeler ağ tarafından ya bir defada ya da uzak konak yolunda bir lapa lapa DNS sunucusu ya da yönlendirici tarafından çok fazla dosya kapmak için inkar bir güvenlik duvarı olması uzak sunucuya neden olabilir. Yerine büyük geniş net lokal olarak ele alınacak bir sonraki yenileme dosyaları yani bir öneri olarak, yerel indirilen dosyaları önbelleğe gerekir.