FastCGI altında çalışırken birkaç PHP süreçler arasındaki APC önbelleğini paylaşmak nasıl?

3 Cevap php

APC etkin olan (Bu konularda, Apache + mod_fastcgi altında) Ben şu anda, PHP / FastCGI birkaç kopya koşuyorum. Ben süreçler arasındaki önbelleğini paylaşabilir miyim? Zaten paylaşılan olmadığını nasıl kontrol edebilirim? (I apc.mmap_file_mask ini ayarı dahil olabileceğini düşünüyorum, ama ben nasıl kullanılacağını bilmiyorum.)

(Ben onun not şu anda paylaşılan düşünüyorum nedenlerinden biri apc.mmap_file_mask, apc.php web arayüzü tarafından bildirilen gibi ben yeniden kadar yaklaşık 3 farklı değerler arasındaki çevirir olmasıdır.)

3 Cevap

APC not şu fastcgi veya fcgid altında çalışan birden çok php-cgi işçiler arasında önbelleğini paylaşır. this feature request Detaylar için bakınız: "Bu davranış olarak şimdi hedeflenen biridir".

Bir geçici çözüm PHP'nin kendi işçileri yönetmek için izin vermektir. Sen sarıcı komut (tüm bu web üzerinden örnekler bol) PHP_FCGI_CHILDREN ortam değişkeni kullanarak bunu yapabilirsiniz. Ayrıca bu yöntemi kullanmak istiyorsanız birden fazla PHP sürecini yumurtlama Fastcgi / fcgid durması gerekir.

PHP_FCGI_CHILDREN dezavantajı işçilerin yönetim fcgid / fastcgi sağladığı kadar iyi olmasıdır.

Yani, orada biz. APC fcgid / Fastcgi ortamında her PHP işçiye kendi önbellek vererek, ya da PHP'nin lehine fcgid / Fastcgi 'nin süreç yumurtlama devre dışı bırakılması anlamına dahili yönetim. Kullanıcının bu gelecekte değiştirir umalım.

Mükemmel olmasa da Domster önerilen yöntem en iyisidir. Ben hataları olmadan bazı düşük hacimli sitelerinde kısa bir süre için bu yapıyorum. I how to set up mod_fastcgi with a shared opcode cache son gecesi ayrıntılı bir açıklama yazdı.

Ben mod_fcgid olursa olsun, sadece PHP PHP_FCGI_CHILDREN yoluyla neden olmuş kaç çocuk PHP sürecine bir defada bir isteği gönderir, çünkü çok önemli değil yeni mod_fcgid daha mod_fastcgi kullanmak bulundu.

Önbellek süreçler arasında ortak olmalıdır. Sen phpinfo () ve apc.php çağırmaları arasındaki mmap dosya için aynı değeri görmem gerektiğini. Bu önerilen varsayılan APC yapılandırma ayarları ile benim için çalışıyor:

extension="apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.enable_cli=1

Ayarlarınızı göndermek isteyebilirsiniz. Ben mmap_file_mask onlar izin değerlerin tam bir olması gerektiğini uyarı gördüm. Bu Xs biri eksik Yani hayır ne alırsınız söylüyorum yoktur.

Belki de fastcgi + apache yapılandırma içerir.