Erişme Oturum değişken ve performans

4 Cevap php

Ben kullanıcı sayfaya erişmek için yeterli izinleri / rolleri / haklara sahip olup olmadığını kontrol etmek gerekir nerede içinde bir web uygulaması var. I USER_ID, ROLE_ID ile bir tablodaki kullanıcıların haklarını batmıştı. Bir kullanıcı uygulamada oturum açtığınızda ise, ben bu kullanıcı ve yapı bir dize için kayıtları okuma ve bir oturum değişkeni atamak olacaktır. Kullanıcı erişimi her sayfayı açmış, ben oturum değişkeni değerini okumak ve sonra dize ayrıştırma ve sonra bu kullanıcının kendisine atanmış yeterli haklara sahip olup olmadığını kontrol edecektir.

Şimdi Korkarım her sayfaları yük oturum değişkeni erişen olmadığını performansını etkileyecektir. Bunu çözmek için herhangi bir alternatif yol var mı?

4 Cevap

Performansta bir net kazanç görmelisiniz.

Bu oturumu yüklenmesi biraz kaynak alacak, ama bu genellikle, bir bağlantı oluşturarak kimlik, sorgu ayrıştırma, bir kayıt alma ve üzerinden göndermeden tutabilen, hangi veritabanından bir kayıt almak için gerekli kaynakların daha az olacaktır ağ. Karşılaştırıldığında, sabit disk kapalı bir oturum dosyası alarak çok daha hızlıdır.

Eğer erken optimize etmeye çalışıyorsanız gibi ses yok. Sen darboğazlar gerçekten nerede görmek için daha sonra izlemek bir süre beklemeniz gerekir.

(saniyede yüzlerce kullanıcı yoksa) hayır, bu bir farkedilir şekilde sitenizin performansını etkilemez.

ama ben bir şey fark ettim:

(...) Ben bu kullanıcı ve yapı bir dize için kayıtları okuma ve bir oturum değişkeni atamak olacaktır. Kullanıcı erişimi her sayfayı açmış, ben (...) oturum değişkeni değerini okumak ve sonra dizeyi ayrıştırmak

a-ha! bakınız, oturumları kodlanmış ve çözümlü session_start() üzerine (normalde, serialize() ve unserialize() Bunun için kullanılır) dizeleri başka bir şey değildir. (bu özellikler çekirdek uygulanan çünkü, ve herhangi bir özel bir yöntemle daha hızlı definitley) Eğer elle oturumda saklamak için gidiyoruz verileri kodlamak gerekmez, bu sizin için bitti.

Eğer kullanırsanız native session handler of PHP oturum verileri muhtemelen ne olursa olsun oturum veri veya erişim olsun, on every oturumu kullanılır talep geri alınacaktır. default session handler uses files olarak veri depolamak için ve çok her istek üzerine dosyayı okumak için neden olacaktır.

Bu optimize etmek istiyorsanız, ([(2)] {ayrıca bkz size APC veya Memcache gibi Belki içeri bir önbellek oturumları kaydetmek önbellek çeşit kullanabilirsiniz } function ).

Greg yukarıda söyledikleri ekleme.

Php seans 2 tipi vardır. (Genellikle / tmp / session_something olarak) bir dosyada saklanan bir veritabanı ve seans saklanan oturumları;

Veritabanı seçeneği bir yuva oluşturma ve veri alma / gönderme yükü vardır. Böyle bir oturum birden çok sunucu / makine arasında persitant güçlü olmak gibi avantajları vardır.

Linux gibi işletim okuma / tampon bellekte bir dosyaya yazar önbelleğe çünkü bir dosyada depolanan oturum bilgi ikinci seçenek muhtemelen performans için en iyisidir.

Yani kısa cevap yem alev değil, havai bir şey değildir, bu konuda endişe ama gerçekten performans umursamaz eğer PHP kullanmak olmaz dont bile vardır.