LANSMAN FIRSATI — SINIRLI Das Nest Lifetime 499 € 149 € Hemen al →
KakapoWP KakapoWP
Yardım Merkezi/Performance/Redis veya Memcached ile nesne cache'ini kurma

Redis veya Memcached ile nesne cache'ini kurma

Şunun için geçerlidir: Kakapo Performance· 5 dk okuma

Önce: PHP'niz neler yapabiliyor?

Nesne cache, Redis veya Memcached ile konuşur ve bunun için PHP'nin uygun uzantısına ihtiyaç vardır. Kakapo bunu çalışma anında, Redis ya da Memcached sınıfının gerçekten yüklü olup olmadığına bakarak denetler. Çalışan bir Redis servisi tek başına yetmez: uzantı olmadan PHP onunla konuşamaz. Uzantı yoksa seçim listesindeki kayıt devre dışıdır ve yanında hangi paketin eksik olduğu yazar (örneğin “pecl install redis” ya da php<version>-redis dağıtım paketi; ardından PHP yeniden başlatılmalıdır). Kakapo yalnızca d'siz eski “memcache” uzantısını bulursa bunu açıkça söyler — bu uzantı kullanılmaz, çünkü toplu sorgu getMulti ve ikili aktarım onda yoktur. İki uzantıdan hiçbiri yoksa burada ilerleyemezsiniz; bu, eklentinin değil barındırma sağlayıcınızın işidir.

Bağlantı bilgilerini girin

Host genellikle 127.0.0.1'dir. “http://” gibi bir şema reddedilir, çünkü buraya yalnızca host adı veya IP yazılır. Bir Unix soketi için onun yolunu girersiniz (ör. /var/run/redis/redis.sock) ve portu 0 yaparsınız. Port, Redis'te genellikle 6379, Memcached'de 11211'dir; izin verilen aralık 0 ile 65535 arasıdır. Bağlantı türünü değiştirdiğinizde, eski port hâlâ varsayılansa Kakapo varsayılan portu otomatik olarak birlikte değiştirir. Veritabanı numarası (0 ile 255 arası) yalnızca Redis'te vardır ve bu siteyi aynı sunucudaki diğer uygulamalardan ayırır. Kullanıcı ve şifreye yalnızca Redis'iniz ACL ile çalışıyorsa (Redis 6 ve üstü) ya da Memcached SASL istiyorsa ihtiyaç duyarsınız. Anahtar ön eki, aynı bellek sunucusundaki iki WordPress kurulumunu birbirinden ayırır — alan boş bırakılırsa site adresinizden bir ön ek türetilir (kwpp artı sekiz karakter). Harflere, rakamlara ve _ . : - karakterlerine izin verilir, en fazla 40 karakter. Kayıt başına geçerlilik süresi varsayılan olarak 86400 saniyedir; izin verilen aralık 0 ile 2592000 arasıdır. 0, “hiç sona ermez” demektir — bunun temizleme açısından sonuçları vardır, aşağıya bakın.

Bir şey yazmadan önce bağlantıyı test edin

“Bağlantıyı test et” düğmesi gerçekten bir bağlantı kurar, bir test anahtarı yazar (geçerlilik süresi 30 saniye), onu geri okur, yazılan değerle karakter karakter karşılaştırır ve yeniden siler. Test ancak değer değişmeden geri geldiğinde başarılı sayılır — yalnızca “connect() false döndürmedi” demek fazla zayıf kalırdı: Redis bağlı olduğu hâlde yazmaya kapalı olabilir (replika), Memcached ise belleği olmadan önce de bağlantı kabul eder. Tüm döngü için bir saniyelik bir zaman sınırı geçerlidir. Ölçülen süre ve birkaç sunucu bilgisi (sürüm, kullanılan bellek, kayıt sayısı, çalışma süresi) ardından kartta görünür. Test başarısız olursa somut neden orada yazar: erişilemiyor, giriş reddedildi, veritabanı seçilemiyor. Test yalnızca yönetim panelinde veya cron üzerinden çalışır — bir ziyaretçinin sayfası oluşturulurken asla test bağlantısı kurulmaz.

Drop-in'i yazın — ve bu sırada neler olur

Nesne cache, wp-content/object-cache.php dosyasında yaşar. WordPress bu dosyayı çok erken, her eklentiden önce yükler. Yazmadan önce Kakapo bir önizleme gösterir: hangi dosya oluşturulacak, içinde hangi erişim bilgileri yer alacak, ardından bellek sunucusunda ne duracak ve geri dönüş yolu nasıl işleyecek. Yolda bir engel varsa — eksik uzantı, bu konumda yabancı bir drop-in, yazılabilir olmayan wp-content, eksik şablon — düğme devre dışı kalır ve nedeni üstünde yazar; aynı kontrol yazma sırasında sunucu tarafında yinelenir. Onaylamak için INSTALLIEREN yazarsınız. Yazma işlemi önce bir komşu dosyaya yapılır; bu dosyanın söz dizimi PHP'nin kendisi tarafından denetlenir (exec() izinliyse ve bir PHP ikili dosyasına erişilebiliyorsa), ancak ondan sonra yerine taşınır ve 0644 olarak ayarlanır. Bu dolambaçlı yolun nedeni: yarım yazılmış bir object-cache.php, her eklentiden önce oluşan bir hata olurdu — site bembeyaz kalırdı, geri almak için kullanacağınız yönetim sayfası da dâhil. Ayrıca her yazma kendi kuşağını alır; böylece bir kaldırma işleminden önceki kayıtlar bir anda yeniden geçerli olmaz (aksi hâlde örneğin eski blog adı geri gelir ve oturum açmış yöneticiler oturumlarından düşerdi). Bu konumda halihazırda yabancı bir drop-in varsa, ne üzerine yazılır ne de silinir.

Çalışırken: sayıları okuma, temizleme, kaldırma

“Çalışır durum” başlığı altında bu tek sayfa çağrısına ait sayılar yer alır: milisaniye cinsinden bağlantı kurulumu, isabetler ve ıskalar, bunların kaçının bellek sunucusundan geldiği, oraya kaç istek gittiği ve bunların ne kadar sürdüğü. Zaman içindeki bir istatistik bilinçli olarak yoktur — bunu tutmak, her çağrıda ölçtüğünden daha fazlasına mal olurdu. “Nesne cache'i temizle”, FLUSHDB ya da flush_all göndermek yerine anahtar tuzunu değiştirir: böylece hiçbir eski anahtar artık geçerli bir kaydı göstermez, aynı sunucudaki diğer uygulamaların verileri ise dokunulmadan kalır. Sahipsiz kalan kayıtlar ayarlanan geçerlilik süresi boyunca sona erer — süre 0 ise hiç sona ermezler ve Redis ya da Memcached kendisi temizlik yapana kadar birikirler. Ayarları değiştirdiğinizde dosyada yazan geçerli olmaya devam eder; Kakapo farkı bildirir ve “Drop-in'i güncelle” seçeneğini sunar. “Drop-in'i kaldır”, geride veritabanı satırı ya da zaman çizelgesi bırakmadan tam olarak bir dosyayı siler; eklenti devre dışı bırakıldığında da bu dosya kaybolur. Şifrenin dosyada düz metin olarak durmasını istemiyorsanız, onu wp-config.php içinde KWPP_OC_AUTH olarak tanımlayıp alanı boş bırakırsınız — sabit önceliklidir. Aynısı host, port, kullanıcı, veritabanı ve ön ek için de geçerlidir (KWPP_OC_HOST, KWPP_OC_PORT, KWPP_OC_USER, KWPP_OC_DB, KWPP_OC_PREFIX); sunucu değişikliği o zaman drop-in'in yeniden yazılmasını gerektirmez.

Bu makale yararlı oldu mu?