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.
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.
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.