PHP - Bir senaryo sürümü nasıl denetlenir

2 Cevap php

Ben küçük bir script var ve yönetici altbilgiden komut sürüm algılamak istiyorum. Admin footer.php ben bu kodu koyabilirsiniz.

<?php
  define('VERSION', '1.0');
  $fp = fopen("http://v.domain.com/version.txt", "r");
  while ($line = fgets($fp)) {
      $line;
      if (VERSION != $line) {
?>
<div id="upgrade">
<a href="http://domain.com/download/" target="_blank">Download a new version [<?php echo $line; ?>]</a>
</div>
<?php
      }
  }
?>

Version.txt sadece var 1.0.1 ve sürümünü karşılaştırmak için iyi çalışıyor.

Buradaki sorun, müşteri site yavaş almak olacaktır. Bu sorunu çözmek için?

2 Cevap

PHP kod çalıştıran sunucu HTTP üzerinden v.domain.com vurdu ve version.txt bir kopyasını indirmek zorunda çünkü yavaş nedenidir. Bu olay olsa da, PHP üzerinde bekleyen orada oturuyor.

Neden bu o altbilgi olsa bile tüm sayfa yavaş yapar? Apache tarayıcıya tükürerek önce biraz PHP sayfanın çıktısını önbelleğe çünkü. Ve Çıktı tamponunu yıkayın bile, bazen tarayıcı yapar ve size üzerinde hiçbir kontrole sahip bir şey.

Bazı PHP tabanlı aracı bırakın, doğru ve altbilgi otomatik sürüm kontrolü, olmasını istediğiniz gibi geliyor?

Eğer öyleyse, o bunu yapıyoruz yol yapıyor bir kaç sorun vardır:

  1. Her zaman sayfa yük sürümünü kontrol etmek gerek yoktur. Eğer bir yerde kontrol son tarih, tasarruf ve sadece ___ gün sonra tekrar kontrol edin. (Umarım zaten yapıyoruz ve sadece basitlik için örnek kesmek)

  2. Başka bir sunucudan bu gibi dosyayı okuyarak kötü bir fikirdir. Şimdi yaşıyor konum olarak v.domain.com meşgul olur, bir yavaşlamaya neden olabilir. Aşağı giderse o zaman aşımı bekliyor çünkü, daha sonra PHP daha uzun sürer.

Bunu yapmak için daha iyi bir yolu Javascript yoluyla olacaktır. Sayfanız yüklendikten sonra, AJAX kullanan bir javascript işlevi olurdu. JavaScript ile bilginiz yoksa orada bir öğrenme eğrisi biraz olabilir, ama bu durumun üstesinden gelmek için ideal bir yoldur gerçi.

Dosyası sadece sürüm numarası ise ben denemenizi öneririz:

file_get_contents()

$version = file_get_contents('http://wwww.example.com');
if (VERSION != trim($version)) {
}