Çalışma Anı Yapılandırması

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.

APC Yapılandırma Seçenekleri
İ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.
PHP_INI_* kiplerinin tanımları ve ayrıntılı açıklamaları için Yapılandırma ayarlarının yeri bölümüne bakınız.

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.

Uyarı

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.

Uyarı

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.