Istekleri arasında PHP nesne durumu hatırla

3 Cevap php

Ben bir uygulama yazıyorum ve pek çok farklı dilde bazı sözlük değerlere sahip olacaktır. Ben GetText kullanabilirsiniz biliyorum, ama Afair dosyaları düzenlemeden sonra derlenmiş olması, ve ben kullanıcı düzenleme sözlüğünü izin istiyorum, ve ben yeniden derleyin. Sunucu üzerinde mo dosyaları. Ben nasıl kullanılacağını pek çok dil bilmiyorum, bu yüzden çözüm esnek olmalıdır.

Iyi çalışıyor bu yüzden veritabanı tasarlanmış ve şema iyi görünüyor, ama her sözlük değeri katıldı bir çift vardır, bu yüzden çözüm çok hızlı değil.

Bu nedenle ben bir kez Sözlük değerleri saklamak düşünüyorum, ve sadece o bir değer düzenledikten sonra yenileyebilirsiniz. Bu isteğin sonunda ölür çünkü ne yazık ki, PHP statik değişkenler, kullanılan olamazdı. Ben kullanıcı başına DB çağrı yapmak zorunda kalacak, çünkü ben, oturumu kullanmak istemiyorum. Onlar gibi uzun uygulama JVM canlı olarak yaşıyoruz - İdeal Ben sadece Java gibi statik değişkenleri kullanmak istiyorum.

Tüm kullanıcılar (kullanıcı başına değil) uzun süre (değil istek başına) için - (sözlükler, sözlük girdileri, vb benim örnekte) bazı değişkenleri saklamak için en iyi çözüm nedir?

I DictionaryValues class kez serialize ve daha sonra bunu her isteği serisini gibi bir şey yapma düşünüyorum. Her zaman birileri sözlüğünü düzenlemek olacaktır, nesne yeniden tefrika edilecek ve eski tefrika nesne yerini alacak. Tabii düzenleme sözlük değerler okunacaktır ne sıklıkta kıyasla nadiren oluşur.

Bu iyi bir çözüm var mı? Ben nesne seri ve diskte saklamak ya da veritabanına yazmak gerekir? Hangisi daha hızlı?

Belki bu sorun için iyi bir çözüm bulmak?

3 Cevap

PHP deneyebilirsiniz APC. Bu hızlı ve kullanımı kolaydır. Sen / serisini nesneleri ve mağaza serileştirebilirsiniz / kolayca olsun.

Dağıtılmış bir ortamda, memcache ile aynı işlevleri gerçekleştirebilir.

Memcache / APC olası çok fazla olup olmadığını bir kaç seçenekleri:

Eğer bir PHP dosyası içine sık sık veritabanı değerlerini "derleme" ve bu içerebilir. Bu hızlı ayrıştırma ve işleme-akıllıca olacaktır.

Eğer (çok büyük olasılıkla, öyle değil mi?) Her sayfada her sözlük değerini ihtiyacınız yoksa Joın olmadan çalışabilir bir önbelleğe alma tablo kullanmak isteyebilirsiniz. Bu bir ayak izi açısından en iyi çözüm olacaktır.

Seçenekleri bir çift vardır:

  1. Sen (shmop veya memcache) paylaşımlı bellek kullanabilirsiniz.
  2. Bir dosya veya veritabanına önbelleğe olabilir - PEAR::Cache_Lite deneyin (veya APC @ jldupont olarak göstermektedir)