PHP içinde global veri depolamak için en iyi uygulama?

7 Cevap php

Ben kullanıcı oturum açmak için bir kullanıcı "library.php" adlı bir sayfa görüntülenir onun / onu 'kütüphane' kaldırmak / içerik ekleyebilirsiniz sağlayan bir web uygulaması koşuyorum. Bunun yerine "library.php" yüklemek kullanıcıların kütüphane everytime içeriği için veritabanı sorgulama, ben, kullanıcı günlükleri sorgu sadece bir kez çalıştırmak, böylece zaman PHP için küresel saklamak istiyorum. Bunu yapmak için en iyi yöntem var mı? fx. Bir oturumda bir dizi onların kütüphane saklamak?

Zaman ayırdığınız için teşekkürler

7 Cevap

Eğer (kesinlikle mümkün olan) önerildiği gibi, bir dizi olarak bir $_SESSION her kullanıcının kütüphane saklamak Eğer kullanıcı kütüphaneye kılan herhangi güncellemeleri anında bu oturum değişkeni yansıtılır emin olmak gerekir .

Orada bir kütüphane getirmek için oluyor bazı ciddi ağır sorgulama, ya da trafik ton yoksa Dürüst olmak gerekirse, ben sadece 'kullanıcı library.php vurur zaman sorguyu yürütmek' sadık olacaktır.

Eğer performans için bakım; Lütfen dikkat:

  • Session database kullanabilir ya da file veri depolamak için.
  • Bu performans ve özellikler bulunuyor veritabanı, yerine dosyaların kullanılmak için burada.

database, bu tür durumlarda tam olarak kullanılmak üzere tasarlanmış kullanın!

Verilerin boyutuna göz önünde bulundurun. Eşzamanlı kullanıcı sayısını tarafından çarpın.

Sonra karşılaştırmak sunucu üzerinde bellek avaiable olduğunu. Ayrıca bu paylaşılan bir sunucu olup olmadığını düşünün; Diğer siteler de kaynaklara ihtiyacı var.

Bu dayanarak, (Remiın Yorumlarınız) başı olarak kullanılabilecek bir dosya oluşturun veya varsayılan vatansız formda kalır ve her zaman okumak ya muhtemelen en iyisidir. Ben veriler her zaman okuma bir yükü çok yaratıyor şüpheliyim.

Kullanıcı giriş yaptığında size xslt gösterilecek bir xml dosyası (örneğin USER_ID.xml) üretebilirsiniz.

http://php.net/manual/en/book.xslt.php

Bir PC uygulaması yapacağını gibi veri bir web uygulamasında permanentely canlı muhafaza edilemez bu yüzden, tamamlandığında her PHP komut dosyası ölür.

Tek yönlü oturumlar olabilir, ama bu kaydetmek istediğiniz veri miktarına bağlıdır. Sizin örneğe göre bir kütüphanede bahsediyorsun, yani büyük veri miktarı bu durumda DB gitmek için yoludur, kaydedilmesi gerekir, ve evet bunu her zaman sorgulamak zorunda gibi bana geliyor.

Başka bir yolu bir php dosyası içinde bir dizide onları kurtarmak için olabilir, ama aynı şekilde size DB her zaman sorgulamak zorunda, böyle php dosyayı her zaman dahil etmek gerekir.

Bu bir db performans optimizasyonu olduğundan, ben size mükemmel sorununuzu maçları memcached bakmak öneririm:

memcached is [..] intended for use in speeding up dynamic web applications by alleviating database load.

I think it would be best to store it in a Session.
It the user logs in, the Session is being created and you can save data in it using the superglobal:

$_SESSION['key'] = "value";

Sen orada da dizileri ya da başka bir şeyi saklayabilirsiniz ve kullanıcı oturum eğer silinebilir.