PHP - Memcache - HTML Önbellekleme

3 Cevap php

Ben performansını artırmak için bazı mekanizmaları bypass edecek bir önbellek sistemi oluşturmak istiyorum.

Bazı örnekler var:

1 -) Her saat başı güncellenen, dinamik bir PHP sayfası var. Sayfa içeriği her kullanıcı için aynıdır. Yani bu durumda ben de yapabilirsiniz:

a) bir HTML sayfası oluşturmak ve bu sayfa her saat oluşturulabilir. Bu durumda ben PHP atlamak istiyorum, yani statik bir sayfa olmalıdır ve güncellenen veritabanı ise, yeni bir HTML dosyası oluşturulur. Bunu nasıl yapabilirim? Ben HTML dosyası oluşturur, bir crontab komut dosyası oluşturabilirsiniz, ancak zarif bir yol olarak görünmüyor.

b) bellekte çıktı önbelleğe, böylece web sunucusu içerik her saat güncellenir. Ben web sunucusu için bir önbellek modülü gerekir sanırım. Orada lighttpd için gayri resmi memcache modülü, ama kararlı görünmüyor, ben de nginx için bir memcache modülü duymuş ama bu mümkün olup olmadığını bilmiyorum. Bu şekilde daha zarif ve mümkün görünüyor, ama nasıl? Herhangi bir fikir? (Yine, bu durumda PHP atlamak istiyorum)

Başka bir örnek, her saat güncellenen, dinamik bir PHP sayfası var bu sayfada sadece kullanıcı bilgilerini kısmı tamamen dinamik (out yani bir kullanıcı günlükleri ya ve bu bölümde onun / durumunu görmek) olduğunu

Yine, nasıl bu sayfa için bir önbellek sistemi oluşturabilir? Ben ilk örneğin bir çözüm bulmak eğer, o zaman ben aynı çözümü ile bu bölümünde AJAX kullanabilirsiniz düşünüyorum. Ben düzeltmek muyum?

düzenleyin: Sanırım, açıkça gelemedi. Ben tamamen PHP atlamak istiyorum. PHP komut hayır PHP çağrısı yapılacaktır bundan sonra, bir kez bir saat çalıştırmak olacaktır. Ben onun yükünü kaldırmak istiyoruz.

Teşekkür peşin,

3 Cevap

Go with static HTML. Her saat sadece çıkışı ile bir statik HTML dosyasını güncelleştirin. Sen dosyasına fopen() ve fwrite() için bir PHP komut dosyası çalıştırmak için cron, bir saatlik kullanmak isteyeceksiniz. Herhangi sayfasını almak için PHP vurmak gerek yok. Sadece mevcut URL adlandırma korumak için söz konusu sayfa için bir. Htaccess mod_rewrite yönlendirme kuralı olun.

Çok şık olmasa da, static HTML ile gzip compression benim için more efficient ve kullanmak istiyorsunuz less bandwidth.

Saatlik bir PHP komut dosyası çalıştırmak için cron kullanarak bir örnek:

// run this command in your console to open the editor
crontab -e

Bu değerleri girin:

01 * * * * php -f /path/to/staticHtmlCreater.php > /dev/null

Son bölümü, herhangi bir çıkış olmayacaktır sağlar. Bu cron her saat ilk dakika çalışır.

UPDATE

Ya ben senin dinamik kullanıcı profili bilgilerinizle ilgili bölüm cevapsız veya bu benim ilk yorumum sonra eklendi. Sadece a single server kullanıyorsanız, ben daha hızlı (tek bir sunucu uygulaması için) memcached daha opcode önbelleğe alma ve önbelleğe alma mekanizması sağlar hem APC bir geçiş yapmak öneririz. Kullanıcının profil verileri below the fold (kullanıcının pencere görünümü altında) ise, potansiyel olarak belirli bir noktaya kadar kullanıcı kaydıran kadar AJAX isteği yapmak için bekleyebilirdi. Sen facebook durum sayfada kullanılan bu işlevi görebilir.

Bu sadece tek bir web sunucusu ise, sadece sayfanın içeriğini önbelleğe PHP'nin APC modülünü kullanabilirsiniz. Gerçekten tüm sayfaları önbelleğe için tasarlanmış değil, ama bir çimdik yapmalıdır.

Düzenleme: Ben APC (henüz) PHP ile birlikte olmadığını söylemeyi unutmuşum, ama PECL kurulabilir. PHP 6 parçası olarak sevk edilecektir.

Bunu yapmak için güzel bir yol statik içerik bir dosyada saklanır sahip olmaktır. Yapılacak bu gibi çalışması gerekir:

  • PHP komut denir
  • if your content file has been modified more than 1 hour ago (width filemtime($yourFile))
    • içeriği yeniden oluşturmak + bu dosyada saklamak + istemciye geri göndermek
  • else
    • (olduğu gibi dosya içeriğini göndermek dosyası ($ yourfile), veya yankı file_get_contents ($ yourfile) ile

Her durumda, hatta ağır yük altında harika çalışıyor.