Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.
APC öntanımlı ayarları çoğu kurulum için yeterli olsa da daha fazla başarım için aşağıdaki değiştirgelerde ince ayarlar yapmak gerekebilir.
Başlıca iki önemli ayara karar vermek gerekir. Birincisi, APC için ne kadar paylaşımlı bellek ayıracaksınız, ikincisi APC'nin her istekte dosya değiştirilmiş mi diye bakmasını istiyor musunuz? Bu ayarların ini yönergeleri sırası ile apc.shm_size ve apc.stat'dır.
Çalışır halde bir sunucuda, eklenti ile birlikte gelen apc.php betiğini sunucunun belge kök dizinindeki bir yere koymak ve tarayıcıdan çağırmak önbellek ile ilgili ayrıntılı bilgiler sağlayacaktır. Eğer PHP kurulumunda GD desteği varsa grafikler de görüntülenecektir. Denetlenmesi gereken ilk şey önbelleğe alınan dosyalardır. Önbelleğin çalıştığını varsayar isek Önbellek tam dolma sayısı'na dikkat etmek gerekir. Bu sayı önbelleğin dolup son apc.ttl saniyede erişilmeyen girdilerin kaç kez zorla temizlenmek zorunda kalındığını gösterir. Ayarlarınızı bu sayıyı küçüktecek şekilde yapmanız gerekir. Eğer sürekli önbelleğinizi dolduruyor iseniz bu önbellek başarımınızı kötü etkileyecektir. APC için daha fazla bellek ayırmanız veya apc.filters kullanarak daha az betiği önbelleğe almanız sorunu çözebilir.
APC, mmap (Memory Mapping) desteği ile derlendiğinde sadece bir bellek segmenti kullanır. SHM (SysV Shared Memory) desteği ile derlendiğinde ise çok sayıda bellek segmenti kullanır. MMAP için azami sınır yoktur, SHM için azami sınır /proc/sys/kernel/shmmax içinde belirtilmiştir.Genelde MMAP desteği önerilir, çünkü HTTP sunucusu başlatıldığında bellek daha çabuk düzenlenir ve başlatma sırasındaki bellek ayırma etkilerini azaltır.
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
---|---|---|---|
apc.enabled | "1" | PHP_INI_SYSTEM | APC 2'de PHP_INI_SYSTEM. APC <= 3.0.12'de PHP_INI_ALL. |
apc.shm_segments | "1" | PHP_INI_SYSTEM | |
apc.shm_size | "32M" | PHP_INI_SYSTEM | |
apc.shm_strings_buffer | "4M" | PHP_INI_SYSTEM | APC 3.1.4 ve sonrasında kullanılabilir. |
apc.optimization | "0" | PHP_INI_ALL | APC 2'de PHP_INI_SYSTEM. APC 3.0.13 sürümünde çıkartılmıştır. |
apc.num_files_hint | "1000" | PHP_INI_SYSTEM | |
apc.user_entries_hint | "4096" | PHP_INI_SYSTEM | APC 3.0.0'dan beri kullanılabilmektedir. |
apc.ttl | "0" | PHP_INI_SYSTEM | APC 3.0.0'dan beri kullanılabilmektedir. |
apc.user_ttl | "0" | PHP_INI_SYSTEM | APC 3.0.0'dan beri kullanılabilmektedir. |
apc.gc_ttl | "3600" | PHP_INI_SYSTEM | |
apc.cache_by_default | "1" | PHP_INI_ALL | APC <= 3.0.12'de PHP_INI_SYSTEM. APC 3.0.0'dan beri kullanılabilmektedir. |
apc.filters | NULL | PHP_INI_SYSTEM | |
apc.mmap_file_mask | NULL | PHP_INI_SYSTEM | |
apc.slam_defense | "1" | PHP_INI_SYSTEM | APC 3.0.0'dan beri kullanılabilmektedir. APC 3.1.4 öncesinde öntanımlı değer "0" (iptal) idi. |
apc.file_update_protection | "2" | PHP_INI_SYSTEM | APC 3.0.6 ve sonrasında kullanılabilir. |
apc.enable_cli | "0" | PHP_INI_SYSTEM | APC 3.0.7 ve sonrasında kullanılabilir. |
apc.max_file_size | "1M" | PHP_INI_SYSTEM | APC 3.0.7 ve sonrasında kullanılabilir. |
apc.use_request_time | "1" | PHP_INI_ALL | APC 3.1.3 ve sonrasında kullanılabilir. |
apc.stat | "1" | PHP_INI_SYSTEM | APC 3.0.10 ve sonrasında kullanılabilir. |
apc.write_lock | "1" | PHP_INI_SYSTEM | APC 3.0.11 ve sonrasında kullanılabilir. |
apc.report_autofilter | "0" | PHP_INI_SYSTEM | APC 3.0.11 ve sonrasında kullanılabilir. |
apc.serializer | "default" | PHP_INI_SYSTEM | APC 3.1.0 ve sonrasında kullanılabilir. |
apc.include_once_override | "0" | PHP_INI_SYSTEM | APC 3.0.12 ve sonrasında kullanılabilir. |
apc.rfc1867 | "0" | PHP_INI_SYSTEM | APC 3.0.13 ve sonrasında kullanılabilir. |
apc.rfc1867_prefix | "upload_" | PHP_INI_SYSTEM | |
apc.rfc1867_name | "APC_UPLOAD_PROGRESS" | PHP_INI_SYSTEM | |
apc.rfc1867_freq | "0" | PHP_INI_SYSTEM | |
apc.rfc1867_ttl | "3600" | PHP_INI_SYSTEM | APC 3.1.1 ve sonrasında kullanılabilir. |
apc.localcache | "0" | PHP_INI_SYSTEM | APC 3.0.14 - 3.1.11 arasında kullanılabilir. |
apc.localcache.size | "512" | PHP_INI_SYSTEM | APC 3.0.14 - 3.1.11 arasında kullanılabilir. |
apc.coredump_unmap | "0" | PHP_INI_SYSTEM | APC 3.0.16 ve sonrasında kullanılabilir. |
apc.stat_ctime | "0" | PHP_INI_SYSTEM | APC 3.0.13 ve sonrasında kullanılabilir. |
apc.preload_path | NULL | PHP_INI_SYSTEM | APC 3.1.1 ve sonrasında kullanılabilir. |
apc.file_md5 | "0" | PHP_INI_SYSTEM | APC 3.1.1 ve sonrasında kullanılabilir. |
apc.canonicalize | "1" | PHP_INI_SYSTEM | APC 3.1.1 ve sonrasında kullanılabilir. |
apc.lazy_functions | 0 | PHP_INI_SYSTEM | APC 3.1.3 ve sonrasında kullanılabilir. |
apc.lazy_classes | 0 | PHP_INI_SYSTEM | APC 3.1.3 ve sonrasında kullanılabilir. |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
apc.enabled
boolean
APC'yi etkisiz duruma getirmek için apc.enabled 0 olarak ayarlanabilir. Bu APC durağan bir şekilde PHP içine derlendi ise özellikle yararlıdır, zaten bu şekilde derlendi ise etkisiz kılmanın başka bir yolu yoktur (DSO olarak derlendi ise php.ini içindeki ilgili extension satırı çıkartılabilir).
apc.shm_segments
integer
Derleyici önbelleği için ayrılan paylaşılan bellek bölümlerinin sayısı. Eğer APC paylaşılan belleğin dışına taşıyorsa ve apc.shm_size için sisteminizin izin verdiği en yüksek değeri verdiyseniz bu değeri yükseltmeyi deneyebilirsiniz.
apc.shm_size
string
MB olarak her bir paylaşılan bellek kesiminin boyutu. SSS'de açıklanan kısa gösterimle belirtilir. Öntanımlı olarak bazı sistemler (çoğu BSD türevi dahil) paylaşılan bellek kesimi için çok düşük sınırlara sahiptir.
apc.shm_strings_buffer
string
APC tarafından dahili olarak dizgeler için paylaşımlı bellek olarak kullanılacak bellek miktarı. Değerinden sonunda megabaytlar için M, gigabatlar için G kullanılabilir. Bu seçeneğin etkin olması her PHP-FPM modülü başına kullanılan bellek miktarını düşürür. Aksi takdirde dizgeler her PHP-FPM modülü için değil sadece bir kere saklanacaktır.
apc.optimization
integer
Eniyileme seviyesi. Sıfır eniyilemeyi iptal eder, daha yüksek değerler daha etkili eniyileme sağlar. Hız artışlarının pek fazla olmamasını bekleyin, deneyseldir.
apc.num_files_hint
integer
HTTP sunucundan dahil edilecek veya istenecek bağımsız kaynak dosyalarının sayısı ile ilgili bir "ipucu". Emin değilseniz sıfıra ayarlayın veya ihmal edin; Bu ayar binlerce kaynak dosyası olan sitelerde yararlıdır.
apc.user_entries_hint
integer
Depolanacak kullanıcı önbellek değişkenlerinin sayısı ile ilgili bir "ipucu" olup apc.num_files_hint'e benzer. Emin değilseniz sıfıra ayarlayın veya ihmal edin.
apc.ttl
integer
Bir önbellek girdisinin bellek yuvasında kullanılmadan kalma süresidir, saniye olarak verilir. Sıfır olarak bırakmak eski girdilerin sürekli olarak bellekte kalmasına ve yeni girdi alınmamasına neden olacaktır.
apc.user_ttl
integer
Bir önbellek girdisinin bellek yuvasında kullanılmadan kalma süresidir, saniye olarak verilir. Sıfır olarak bırakmak eski girdilerin sürekli olarak bellekte kalmasına ve yeni girdi alınmamasına neden olacaktır. Önbellekte yer kalmaması durumunda ttl sıfır ise önbellek tamamen silinir; ttl sıfırdan büyük ise sadece süresi dolmuş girdiler silinmeye çalışılır.
apc.gc_ttl
integer
Bir önbellek girdisinin bellek yuvasında kullanılmadan kalma süresidir, saniye olarak verilir. Sıfır olarak bırakmak eski girdilerin sürekli olarak bellekte kalmasına ve yeni girdi alınmamasına neden olacaktır. Önbellekte yer kalmaması durumunda ttl sıfır ise önbellek tamamen silinir; ttl sıfırdan büyük ise sadece süresi dolmuş girdiler silinmeye çalışılır.
apc.cache_by_default
boolean
Öntanımlı olarak etkindir ("On"), fakat sadece olumlu süzgece uyan dosyaların önbelleğe alınması için etkisiz ("Off") hale getirilerek, apc.filters ile birlikte kullanılabilir.
apc.filters
string
Genişletilmiş POSIX düzenli ifadelerine uyan virgülle ayrılmış dizge değerlerin listesidir. Eğer kaynak dosya adı, listedeki herhangi bir kalıba uyarsa bu dosya önbelleğe alınmaz. Eşleştirme için include / require işlevlerine aktarılmış olan dosya adı kullanılır, mutlak yol kullanılmaz. Eğer deyimin ilk karakteri + ise, süzgeç ile eşleşen dosyalar önbelleğe alınır, - ise alınmaz. - öntanımlıdır, bu yüzden yazılmayabilir.
apc.mmap_file_mask
string
Eğer --enable-mmap kullanılarak MMAP desteği ile derlendiyse, mmap hafıza bölgesinin dosya mı yoksa paylaşımlı bellek desteği ile mi hazırlandığını belirlemek için mmap modülüne aktarılacak mktemp tarzı dosya maskesidir. Doğrudan dosya destekli mmap için /tmp/apc.XXXXXX'a benzer şekilde ayarlayın (tam olarak 6 adet X). POSIX tarzı shm_open/mmap kullanmak için dosya kalıbına .shm koyun. Örnek olarak /apc.shm.XXXXXX. Ayrıca /dev/zero şeklinde ayarlanarak, anonim mmap bellek için çekirdeğin /dev/zero arabirimi kullanılabilir. Tanımsız olarak bırakmak anonim mmap'e zorlayacaktır.
apc.slam_defense
integer
Çok yoğun sunucularda, sunucuyu başlattığınızda veya dosyaları değiştirdiğinizde, aynı zamanda, aynı dosyayı önbelleğe almaya çalışan birçok sürecin birbiriyle yarışmasına neden olabilirsiniz. Bu ayar önbelleğe alınmamış bir dosya üzerinde süreçlerin es geçme yüzdesini ayarlar. Diğer bir deyişle tek bir sürecin bir dosyayı önbelleğe almama olasılığı olarak düşünebilirsiniz. Örnek olarak, apc.slam_defense'i 75'e ayarlamak %75 olasılıkla sürecin önbellekleme yapmayacağını gösterir. Bu yüzden yüksek değerler daha iyi savunma sağlar. Bu özelliği iptal etmek için 0 olarak ayarlayın.
Sonraki sürümlerde apc.write_lock ile değiştirilmiştir.
apc.file_update_protection
integer
Etkin kullanılan bir HTML sunucusunda bir dosyayı değiştirdiğiniz zaman bunu çok kısa atomik bir zaman diliminde yapmalısınız, geçici bir dosyaya yazma işlemi yapılır ve hazır olduğunda özgün dosya adıyla yeniden isimlendirilir (mv). Çoğu metin düzenleyici, cp, tar ve diğer bu türden programlar bu şekilde çalışmaz. Metin düzenleyicileri dosyayı düzenlerken, APC, dosyanın hazır olmayan halinin, önbelleğe alınmasına yol açabilir. apc.file_update_protection ayarı yeni dosyaların önbelleklemesi üzerinde bir geciktirme sağlar. Varsayılan değeri 2 saniyedir. Bu dosyalara erişildiğinde, değişiklik zaman damgası (mtime) 2 saniyeden küçükse önbelleğe alınmayacakları anlamına gelir. Bu tür yarım yazılmış dosyalara erişen ziyaretçiler uygulamalarda tuhaf durumlar ile karşılaşabilir, en azından bu tuhaflıklar kalıcı değildir. Eğer dosyalarınızın güncellemesini atomik zamanlama ile yaptığınızdan eminseniz, rsync bunu doğru bir şekilde yapar, bu koruma mekanizmasını 0'a ayarlayarak kapatabilirsiniz. Eğer yüksek girdi-çıktı nedeniyle 2 saniyeden daha uzun süren güncelleme süreçlerine sahipseniz bunu bir miktar arttırmak isteyebilirsiniz.
apc.enable_cli
integer
Çoğunlukla deneme ve hata arama için kullanılır. Bunu ayarlamak PHP'nin CLI sürümü için APC'nin yetkilendirilmesini sağlar. Normalde her CLI isteği için APC önbelleğinin yeniden oluşturulmasını istemezsiniz, fakat çeşitli deneme senaryoları için APC'nin kolay bir şekilde yetkilendirilmesi yararlı olabilir.
apc.max_file_size
integer
Bu değerden daha büyük dosyaların önbelleğe alınmasını engeller, varsayılan değeri 1M'dır.
apc.stat
integer
Bu ayarı değiştirirseniz dikkatli olun, ayarın varsayılan durumunda APC her istekte betik dosyasının değiştirilme durumu denetlenecektir. Eğer betik değiştirildi ise yeni betiği işleyecek ve önbelleğe alacaktır. Eğer bu ayarı etkisiz duruma getirirseniz APC betiği değiştirilme durumu için denetlemeyecektir. Bu da betik üzerindeki değişikliklerin etkin olması için HTML sunucunuzu yeniden başlatmanızı gerektirir. Ürün ortamında kullanılan bir sunucuda nadiren kod değiştirmeleri yapılır, bu yüzden etkisiz duruma getirilmesi önemli başarım artışlarına neden olabilir.
Betiğe dışardan dahil edilen (include/require) dosyalar için de bu seçenek geçerlidir, fakat eğer göreli dosya yolları (Unix üzerinde / ile başlamayan herhangi bir yol) kullanarak dahil ediyorsanız APC dosyayı benzersiz olarak diğerlerinden ayırabilmek için denetlemek zorundadır. Eğer mutlak yol kullanıyorsanız APC bu denetimi atlayacak ve dosya için benzersiz tanımlayıcı olarak mutlak yolu kullanacaktır.
apc.write_lock
boolean
Yoğun sunucularda, sunucu başlatıldığında veya birçok dosya değiştirildiğinde, bütün süreçlerinizin aynı dosyaları derleyip önbelleğe almaya çalışması gibi bir durumla karşılabilirsiniz, write_lock etkin durumda iken önbelleğe alınmamış bir betiği sadece bir süreç işleyecektir diğer süreçler kilitli durumun açılmasını beklemek yerine önbelleğe alınmamış bir betiği çalıştıracaklardır.
apc.report_autofilter
boolean
Erken/Geç bağlama konuları nedeni ile özdevinimli olarak hariç bırakılan betiklerin raporlanmasını sağlar.
apc.serializer
string
Kullanılacak üçüncü parti sıralandırıcıyı yapılandırmak için kullanılır.
apc.include_once_override
boolean
include_once ve require_once çağrılarında eniyileştirme sağlar ve pahalı sistem çağrılarının kullanımından sakınır.
Bu seçenek DENEYSELdir. Bu seçeneğin ismi, davranışı ve belgelemesi APC'nin ileri sürümlerinde bilgi verilmeksizin değiştirilebilir. Bu seçeneği kullanma riski size aittir.
apc.rfc1867
boolean
RFC1867 dosya yükleme aşamalarını kancalama yalnızca APC'yi PHP 5.2.0 veya sonraki sürümlerde derlediyseniz geçerlidir. Etkin duruma getirildiğinde, bir yükleme formunda dosya alanından önce APC_UPLOAD_PROGRESS alanına rastlandığında özdevinimli olarak upload_anahtar içeren bir kullanıcı önbelleği oluşturulur. Burada anahtar, form girdisindeki APC_UPLOAD_PROGRESS elemanının değeridir.
Şuna dikkat edin: APC_UPLOAD_PROGRESS ile belirtilen gizli alan dosya alanından önce gelmelidir, yoksa karşıya yükleme işlemi gerektiği gibi yürümez.
Karşıya dosya yükleme izlemesi, evre korumalı değildir, bu yüzden yeni yapılan yüklemeler bir önceki devam eden izlemeyi devre dışı bırakır.
Şuna dikkat edin: hız sadece tüm dosya aktarımları tamamlandığında kullanılabilir.
Örnek 1 - Bir apc.rfc1867
örneği
<?php
print_r(apc_fetch("upload_$_POST[APC_UPLOAD_PROGRESS]"));
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
Array ( [total] => 1142543 [current] => 1142543 [rate] => 1828068.8 [filename] => test [name] => file [temp_filename] => /tmp/php8F [cancel_upload] => 0 [done] => 1 )
apc.rfc1867_prefix
string
rfc1867 karşıya dosya yükleme işlevselliğince üretilen kullanıcı önbellek girdisi için kullanılacak anahtar öneki.
apc.rfc1867_name
string
APC karşıya dosya yükleme aşamalarını etkin hale getiren gizli form girdi adını ve kullanıcı önbellek sonekini bildirir.
apc.rfc1867_freq
string
Karşıya yükleme işlemleri için kullanıcı önbelleğinin güncellenme sıklığını belirler. Toplam dosya boyutunun belirli bir yüzdesi ya da bayt olarak boyut verilir. Boyuta seçime bağlı olarak kilobayt için 'k', megabayt için 'm', gigabayt için 'g' son ekleri ile belirtilir (büyük veya küçük harf farketmez). Sıfır olarak ayarlamak, mümkün olduğu kadar sık güncellenmesine neden olur fakat bu yükleme işlemlerininin yavaşlamasına neden olabilir.
apc.rfc1867_ttl
integer
RFC1867 girdileri için TTL.
apc.localcache
boolean
Yerel işlemler için gölge önbelleği etkin hale getirir, bu kilitsiz işlemler yaparak kilitlerden kaynaklanan çakışmaları azaltır.
apc.localcache.size
integer
Yerel işlemlerin gölge önbellek boyutu, yeteri kadar büyük bir değere ayarlanmalıdır. Yaklaşık olarak apc.num_files_hint değerinin yarısı kadar.
apc.coredump_unmap
boolean
APC'nin idaresi için, sinyal verildiği zaman çekirdek döküm dosyaları yazan SIGSEGV gibi sinyallerin işlenmesini etkin kılar. Bu sinyaller alındığı zaman, APC paylaşılan belleği kaldırarak çekirdek döküm dosyasından yeniden oluşturmayı deneyecektir. Bu ayar ölümcül sinyaller alındığı zaman büyük bir paylaşılan bellek alanı olan sistemlerde istikrarı iyi yönde etkileyebilir.
Bu özelliğin tehlikeli olma olasılığı yüksektir. Ölümcül bir hata meydana geldiğinde, paylaşılan belleği kaldırmak, belirsiz davranışlara neden olabilir.
Bilginize:
Bazı sistem çekirdekleri, çekirdek döküm dosyaları oluşturulurken, çeşitli paylaşılan bellek bölümlerinin dökümünü görmezden gelecek araçlar sağlasa da, bu uygulamalar önemli paylaşılan bellek bölümlerini de görmezden gelebilir, Apache puan tahtası gibi.
apc.stat_ctime
integer
Düğümlerin değişmediğininden emin olmak için ctime kullanmak svn veya rsync gibi programların neden olduğu sorunları engelleyebilir. APC normalde sadece mtime ile denetim yapar.
apc.canonicalize
bool
Etkin kılındığında göreli dosya yolları durumsuz kipte normalleştirilir ve akış sarmalayıcıları üzerinden kullanılan dosyalar, realpath() akış sarmalayıcıları desteklemediğinden arabelleklenemez.
apc.preload_path
string
İsteğe bağlı olarak, APC'nin başlatma sırasında arabellek verisini yükleyeceği dizinin yolunu belirtmekte kullanılır.
apc.use_request_time
bool
TTL için SAPI istek başlatma zamanını kullanır.
apc.file_md5
bool
Dosyalar için belirtilem md5 özeti kullanılır.
apc.lazy_functions
integer
İşlevler için çılgın yüklemeyi etkinleştirir.
apc.lazy_classes
integer
Sınıflar için çılgın yüklemeyi etkinleştirir.