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.
İsim | Öntanımlı değeri | Değişiklik yeri | Değişiklik 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 | "30" | PHP_INI_SYSTEM | |
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 | "0" | PHP_INI_SYSTEM | APC 3.0.0'dan beri kullanılabilmektedir. |
apc.file_update_protection | "2" | PHP_INI_SYSTEM | APC 3.0.6'dan beri kullanılabilmektedir. |
apc.enable_cli | "0" | PHP_INI_SYSTEM | APC 3.0.7'den beri kullanılabilmektedir. |
apc.max_file_size | "1M" | PHP_INI_SYSTEM | APC 3.0.7'dan beri kullanılabilmektedir. |
apc.stat | "1" | PHP_INI_SYSTEM | APC 3.0.10'dan beri kullanılabilmektedir. |
apc.write_lock | "1" | PHP_INI_SYSTEM | APC 3.0.11'den beri kullanılabilmektedir. |
apc.report_autofilter | "0" | PHP_INI_SYSTEM | APC 3.0.11'den beri kullanılabilmektedir. |
apc.include_once_override | "0" | PHP_INI_SYSTEM | APC 3.0.12'den beri kullanılabilmektedir. |
apc.rfc1867 | "0" | PHP_INI_SYSTEM | APC 3.0.13'den beri kullanılabilmektedir. |
apc.rfc1867_prefix | "upload_" | PHP_INI_SYSTEM | |
apc.rfc1867_name | "APC_UPLOAD_PROGRESS" | PHP_INI_SYSTEM | |
apc.rfc1867_freq | "0" | PHP_INI_SYSTEM | |
apc.localcache | "0" | PHP_INI_SYSTEM | APC 3.0.14'den beri kullanılabilmektedir. |
apc.localcache.size | "512" | PHP_INI_SYSTEM | APC 3.0.14'den beri kullanılabilmektedir. |
apc.coredump_unmap | "0" | PHP_INI_SYSTEM | APC 3.0.16'dan beri kullanılabilmektedir. |
apc.stat_ctime | "0" | PHP_INI_SYSTEM | APC 3.0.13'den beri kullanılabilmektedir. |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
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).
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.
MB olarak her bir paylaşılan bellek kesiminin boyutu. Öntanımlı olarak bazı sistemler (çoğu BSD türevi dahil) paylaşılan bellek kesimi için çok düşük sınırlara sahiptir.
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.
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.
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.
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.
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.
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.
Ö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.
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.
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.
Ç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.
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.
Ç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.
Bu değerden daha büyük dosyaların önbelleğe alınmasını engeller, varsayılan değeri 1M'dır.
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.
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.
Erken/Geç bağlama konuları nedeni ile özdevinimli olarak hariç bırakılan betiklerin raporlanmasını sağlar.
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.
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.
Ö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 )
rfc1867 karşıya dosya yükleme işlevselliğince üretilen kullanıcı önbellek girdisi için kullanılacak anahtar öneki.
APC karşıya dosya yükleme aşamalarını etkin hale getiren gizli form girdi adını ve kullanıcı önbellek sonekini bildirir.
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.
Yerel işlemler için gölge önbelleği etkin hale getirir, bu kilitsiz işlemler yaparak kilitlerden kaynaklanan çakışmaları azaltır.
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'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.
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.