Merhaba arkadaşlar,
Kendi panelimde/scriptimde kullanmak üzere çoklu dil üzerine çalışma yapmaktayım. Performans konusunda fikrinizi/önerinizi almak istiyorum.
Çoklu dil üzerine statik bir sınıf oluşturdum. Bu sınıf kabaca dil dosyası oluşturma, dil dosyası okuma veya kelimenin çevirisini temin etmek gibi görevleri mevcut. Dil dosyaları json formatında fiziki dosya olarak saklıyorum. Dil dosyası okundugunda array'e çevrilip sınıf içinde değişkene atanıyor.
Statik sınıf ilk başlatıldığında varsayılan dili cookie den çekiyor, cookie yoksa define değeri okuyarak gerekli dil dosyasını okuyor ve bir değişkene atıyor. Dil dosyası yok ise boş array olarak görevi tamamlıyor.
Statik sınıftan çeviri istediğimde; yüklenen dil içinde gelen kelimeyi array key şeklinde arıyor. Key mevcut ise value'yı return ediyor. Mevcut değilse gelen keimeyi return ediyor.
Burada benim sormak istediğim; her sayfa yüklemede dil dosyasını tek seferlik okuma isteği oluşuyor. Ve her kelimenin çeviri talebinde array key araması yapılıyor ve bir sonuç döndürülüyor. Bu aşamada bu yapıda bir dil kısmı sistemi çok fazla yorar mı? Veya aynı işlemi mysql ile ayrı bir tabloda yapılsa performans olarak durumu ne olur. Veya bu mantığın dışında önerebileceğiniz başka method varsa önerilerinize de açığım.
PHP Dil Dosyası Performnası Öneri/Fikir Talebi
2
●121
- 12-05-2020, 19:34:59Sadece fikir olması açısından fazla üzerinde düşünmeden yazacağım. Yazdıklarım eğer bir sitenin global öğelerinin dile göre değiştirilmesini istiyorsanız geçerli. Dinamik içerikler, haberler, sayfalar vs. için geçerli değil. Ancak anasayfa = homepage, iletişim = contact us gibi çevirilerden bahsettiğinizi düşünerek yazıyorum.
Bu tarz global değişkenleri ben olsam veritabanında tutardım. Yine veritabanında da json olarak tutabilirsiniz bu size kalmış. Diyelim ki tutmadık.
dilyonetimi tablomuz olsun.
Siz statik olarak TR ve EN adında iki alan eklediniz bu tabloya, veriler ise şu şekilde.
1 - Anasayfa - Homepage
2 - İletişim - Contact Us
3 - Hakkımızda - About Us
4 - Ekibimiz - Team
.
.
.
şeklinde gidiyor.
Site ilk çağırıldığında varsayılan bir dil zaten seçtiriyorsunuz. Ve ziyaretçi başka bir dil seçene kadar yaptığınız mysql sorgusunu önbelleğe alıyorsunuz. Ziyaretçi varsayılan dil olan TR yerine EN seçerse, sorguyu yineleyip bu sefer dönen sonucu önbelleğe alabilirsiniz. Bu şekilde yönetim panelinden sınırsız dil ekleyebilir ve ona göre çalışma yapabilirsiniz. Yine ek olarak, dil dosyalarını yine json olarak tutup dosya üzerinden de okutabilirsiniz ancak, çok yoğun trafik almayacaksanız, mysql kısmında önbellek kullanmasanız bile hız olarak gözle görülür fark olmayacaktır. Yine de sorguyu önbelleğe alarak işlem yapabilirsiniz.
Dediğim gibi üzerinde çok düşünmedim, görünce yazayım dedim. İyi forumlar.