PHP'de dahili olarak istekler arası değişken değeri aktarabileceğimiz bir sistem yok. $_GLOBAL de sadece tek istekteki değişkenlerin erişim alanı ile ilgili. $_SESSION muadili kullanıcıya bağlı olmadan istekler arası veri taşımaya olanak sağlayan bir sistem maalesef yok. PHP'ye dahili olarak düşünebileceğimiz sistem APC. O da varsayılan olarak kapalı geliyor. Ayarlardan açmak, pecl üzerinden kurulum yapmak vs. gerekiyor.
www.php.net
Keşke PHP'de bu özellik dahili olarak olsa ve açık gelseydi. En azından $_SESSION gibi diske yazan bir dahili uygulama boyutunda değişken yani cache sistemi olsa güzel olurdu fakat bildiğim, araştırdığım kadarıyla yok. Diske yazıp okuyan kendi cache sisteminizi geliştirebilirsiniz, bunun hazırını araştırabilirsiniz, apcu kullanabilirsiniz, redis memcached tarzı harici bir cache sistemi kullanabilirsiniz. En sağlıklısı harici cache sistemi kullanmak çünkü kaynak kullanımı harici olarak takip edebilirsiniz ama en zoru ve bakım maliyeti en yüksek olan da tabi ki o. Yine de APC yerine daha mantıklı bence. Bunun yerine kendi geliştirdiğiniz bir disk cache sistemi de kullanabilirsiniz.
Cache sistemleri hakkında fikir vermesi açısından hazır frameworkler nasıl yapıyor diye bakabiliriz.
Learn how to increase software performance and scalability by implementing and manipulating the right caching strategy in Laravel.
kinsta.com
En popüler PHP frameworklerinden olan Laravel için 5 seçenek sunulmuş.
1. File cache - Değişkeni diske yazmaya uygun formata getirip (serileştirip) diske yazıp diğer isteklerde bu dosyayı okuyup php değişkenine çevirip (çözme) o istekler arası veri taşımayı sağlıyor.
2. PHP Array - File Cache'in gelişmişi gibi düşünebiliriz. Veriyi direkt php'nin kendi array formatında tutuyor. Böylece serileştirme, çözme aşamalarını ortadan kaldırıp daha performanslı bir file cache sistemi sağlıyor.
3. 4. 5. - Zaten harici sistemler. Özellikle Redis bu iş için çok uygun fakat ek bir araçla daha uğraşmanız gerekiyor.
PHP ile uğraştığım zamanlar bu konuya ben de çok takmıştım. Her istek için DB'ye gitmek ciddi performans kaybı gibi geliyordu. Şimdi çok takmıyorum açıkçası böyle bir ihtiyacım olsa direkt uygulamanın kendi veritabanını ya da file, array cache kullanırım. PHP ile geliştirilen bir sistemin en büyük avantajı bence harici bir vps'e vs. gerek kalmadan ucuz hostlarda da sorunsuzca barındırılabilmesi. Redis, Memcached vs. bunun için php için çok mantıklı değil diye düşünüyorum.
En azından büyük host firmaları APC desteklese çok iyi olurdu ama sanırım yok:
Ne yazık ki, varsayılan PHP önbelleği kullanıyoruz ve bu yüzden sunucularımıza APC (alternative PHP cache) yükleyemiyoruz....
www.hostinger.web.tr