Bu durumda daha iyi veri depolama için oturumları veya sabitleri

2 Cevap php

Benim web sitesinde farklı diller için veri depolamak bazı tavsiyeler istiyorum. Ben saat searchin geçirdim ve ihtiyacınız olanı bulmak için görünmüyor olabilir. Benim durum İşte, bu yüzden bana ne düşündüğünüzü bildirin.

Ben birden fazla kullanıcı bilgilerini görüntülemek ve saklamak için giremiyebilirler bir web sitesi var. Ben bir FreeBSD işletim sistemi üzerinde, PHP, MySQL, Apache kullanmak (her ne kadar gelişim sırasında sağ şimdi Vista ile benim ev kutusunda). Ben $ _SESSION bazı hesap bilgilerini saklamak, ama çoğunlukla ihtiyaç verileri depolamak için yerel değişkenler ile sınıflarını kullanın. Ben 2,000 webapp 6.000 kullanıcılarına her yerde olacak, bu yüzden performansı hakkında endişeliyim. Ben birden çok dilde bu geçerli yapmak istiyorum. Gördüğüm bazı siteler kullanıcı hoşuma onların dil tercihi, seçebileceğiniz bir açılan liste sağlar.

Ben düşündüm iki seçenek var, ama hangi olarak hiçbir ipucu daha iyidir, ya da ettik bunu gerçekleştirmek için daha iyi bir yolu olup olmadığını. Bir $ _SESSION nesne dil özel verileri saklamak olacaktır. Yani, kullanıcı oturum olur ve dil tercihine göre $ _SESSION webapp boyunca kullanılan değişkenlere uygun dil metinle doldurulur olacaktır. Bu Böyle $ _SESSION ['My_Title'] = "Bu İngilizce veya Almanca, vb, web siteme başlık" gibi dize veri ile yaklaşık 300 kadar değişkenleri (herhangi bir cisim) ... olurdu anlamına gelebilir. Diğer seçenek sabitleri ve config metin dosyası her sabit tanımlamak ve dil tercihi kümesi temelinde giriş üzerine bu dosyayı yüklemek olacaktır. Ben sabitleri kullanarak $ _SESSION biraz daha yavaştır, ancak Oturum fazla RAM kullanmak olacağını okumuştum.

Herhangi bir fikir veya kaynakların beni işaret olabilir? Teşekkürler.

2 Cevap

Eğer koymak veriler $_SESSION kullanıcı başına temelinde - Eğer aynı veriyi koyarsanız $_SESSION 10 kullanıcıları için, o veri 10 çoğaltılmış olacak demektir kez.

Ben personel, $_SESSION uygulamanızın yerelleştirilmiş dize koymak olmaz: Bu "sabit" olan bir şey, her kullanıcı için aynı şey - yani özgü olan bir uzayda yerini yok Her kullanıcı.


Using PHP constants might be an idea ; for instance :

en.php:

define('LANG_TITLE', 'The title of the site');
define('LANG_WElCOME', 'Welcome on my site');

Ve fr.php:

define('LANG_TITLE', 'Le titre du site');
define('LANG_WELCOME', 'Bienvenue sur mon site');


Using a PHP array would be another ; for example, you'd have en.php:

$lang = array(
    'title' => "The title of the site", 
    'welcome' => "Welcome on my site", 
);

Ve fr.php:

$lang = array(
    'title' => "Le titre du site", 
    'welcome' => "Bienvenue sur mon site", 
);


Which one should you choose ? I suppose it's mainly a matter of taste, and there shouldn't be much of a difference between those two ideas.


Or, another totally idea would be to use something like gettext (see also), which is a standard way of doing translations, and is (of course) usable from PHP.

Ben seçim olsaydı, oldukça standart olduğu gibi ben, gettext dayalı bir çözüm için gidebilir - ya da ben Zend_Translate classes from Zend Framework, at least for a ZF-based project (btw, amongst those, there is one adapter which is using gettext ;-) ) kullanmak istiyorum

Lütfen oturumda mümkün olduğunca az veri saklamak için çalışın. Varsayılan olarak oturum verileri PHP ile size dosya sistemi saklanan ve dosya sistemi erişim hemen hemen her zaman yavaş olmasıdır.

Ben kullanıcı için bir tanımlayıcı depolamak için oturumu kullanın. Bunun dışında ben oturum içine bir şey koyarak bir kez daha düşünün.

Istekleri arasında kalıcı olması için gereken veri depolamak için olası alternatifler bellek veri chaches veya (belki sadece bellekte saklanan bir tabloda) veritabanı vardır.