|
一、安裝APC
下載 http://pecl.php.NET/get/APC-3.1.9.tgz
編譯參數(shù)如下:
復(fù)制代碼 代碼如下:./configure --enable-apc --enable-apc-spinlocks --disable-apc-pthreadmutex
安裝過程就不說了, 標(biāo)準(zhǔn)的php擴(kuò)展安裝模式.
二、2套配置文件
性能高, 不適合頻繁更新:
復(fù)制代碼 代碼如下:apc.enabled=1
apc.stat = 0
apc.stat_ctime = 0
apc.shm_size = 64M
apc.shm_segments = 1
apc.num_files_hint = 1000
apc.ttl = 0
apc.slam_defense = 0
apc.write_lock = 1
apc.file_update_protection = 2
性能稍低:
復(fù)制代碼 代碼如下:apc.enabled=1
apc.stat = 1
apc.stat_ctime = 1
apc.shm_size = 64M
apc.shm_segments = 1
apc.num_files_hint = 1000
apc.ttl = 86400
apc.slam_defense = 0
apc.write_lock = 1
apc.file_update_protection = 2
2套配置關(guān)鍵在于apc.stat, 開啟后APC將不會檢查文件是否更新, 這樣可以減少大量不必要的系統(tǒng)調(diào)用.
但是, 對于新發(fā)布的問題 需要重新啟動php. 可以根據(jù)情況選擇.
另外, 附上參數(shù)說明:
apc.enabled boolean
apc.enabled 可以設(shè)成 0 來禁用 APC.主要是用在當(dāng) APC 被靜態(tài)編譯入 php 時(shí),因?yàn)闆]有其它方法來禁用了(編譯為 DSO , 的時(shí)候,可以將php.ini中的extension 行注釋掉)。
apc.shm_segments integer
編譯器緩存要分配的共享內(nèi)存塊的數(shù)目。如果 APC 用光了共享內(nèi)存但是已經(jīng)將 apc.shm_size 設(shè)為了系統(tǒng)所能允許的最大值,可以嘗試增大此值。
apc.shm_size integer
以 MB 為單位的每個(gè)共享內(nèi)存塊的大小。默認(rèn)時(shí),有些系統(tǒng)(包括大多數(shù) BSD 變種)的共享內(nèi)存塊大小非常低。
apc.optimization integer
優(yōu)化級別。設(shè)為 0 則禁用優(yōu)化器,更高的值則使用更主動的優(yōu)化。期望非常有限的速度提升。尚在試驗(yàn)中。
apc.num_files_hint integer
Web 服務(wù)器上的被包含或被請求的不同源文件的數(shù)目的大概估計(jì)。如果不確定則設(shè)為 0 或去掉此項(xiàng);此設(shè)定主要用在有數(shù)千個(gè)源文件的站點(diǎn)。
apc.user_entries_hint integer
與apc.num_files_hint類似, 根據(jù)唯一用戶數(shù)來存儲緩存變量。 如果不能確定則設(shè)置為0或或去掉此項(xiàng)。
apc.ttl integer
緩存條目在緩沖區(qū)中允許逗留的秒數(shù)。0 表示永不超時(shí)。建議值為7200~86400 設(shè)為 0 意味著緩沖區(qū)有可能被舊的緩存條目填滿,從而導(dǎo)致無法緩存新條目。
apc.user_ttl integer
類似于apc.ttl,只是針對每個(gè)用戶而言,建議值為7200~86400。 設(shè)為 0 意味著緩沖區(qū)有可能被舊的緩存條目填滿,從而導(dǎo)致無法緩存新條目。 如果大于0,APC將嘗試刪除過期條目。
apc.gc_ttl integer
緩存條目在垃圾回收表中能夠存在的秒數(shù)。此值提供了一個(gè)安全措施,即在服務(wù)器進(jìn)程在執(zhí)行緩存的源文件時(shí),如果該文件被修改則舊版本將不會被回收,直到達(dá)到此 TTL 為止。設(shè)為零將禁用此特性。
apc.cache_by_default boolean
默認(rèn)為 on,但可以設(shè)為 off 并和加號開頭的 apc.filters 一起用,則文件僅在匹配過濾器時(shí)被緩存。
apc.filters string
一個(gè)以逗號分隔的 POSIX 擴(kuò)展正則表達(dá)式的列表。如果任一個(gè)模式匹配源文件名,則該文件不被緩存。注意用來匹配的文件名是傳遞給 include/require 的文件名,而不是絕對路徑。如果正則表達(dá)式的第一個(gè)字符是+ t則意味著任何匹配表達(dá)式的文件會被緩存,如果第一個(gè)字符是 - 則任何匹配項(xiàng)都不會被緩存。 -是默認(rèn)值,可以省略掉。
apc.mmap_file_mask string
如果使用 --enable-mmap(默認(rèn)啟用)為APC編譯了MMAP支持, 這里的值就是傳遞給mmap模塊的mktemp風(fēng)格的文件掩碼(建議值為" /tmp/apc.XXXXXX")。 該掩碼用于決定內(nèi)存映射區(qū)域是否要被file-backed或者shared memory backed。 對于直接的file-backed內(nèi)存映射,要設(shè)置成"/tmp/apc.XXXXXX"的樣子(恰好6個(gè)X)。 要使用POSIX風(fēng)格的shm_open/mmap就需要設(shè)置成"/apc.shm.XXXXXX"的樣子。 你還可以設(shè)為"/dev/zero"來為匿名映射的內(nèi)存使用內(nèi)核的"/dev/zero"接口。 不定義此指令則表示強(qiáng)制使用匿名映射。
apc.slam_defense integer
在非常繁忙的服務(wù)器上,無論是啟動服務(wù)還是修改文件, 都可能由于多個(gè)進(jìn)程企圖同時(shí)緩存一個(gè)文件而導(dǎo)致競爭條件。 這個(gè)選項(xiàng)用于設(shè)置進(jìn)程在處理未被緩存的文件時(shí)跳過緩存步驟的百分率。 比如設(shè)為75表示在遇到未被緩存的文件時(shí)有75%的概率不進(jìn)行緩存,從而減少碰撞幾率。 反對使用該指令,鼓勵設(shè)為 0來禁用這個(gè)特性。建議該用apc.write_lock指令。
Deprecated by apc.write_lock.
apc.file_update_protection integer
當(dāng)你在一個(gè)運(yùn)行中的服務(wù)器上修改文件時(shí),你應(yīng)當(dāng)執(zhí)行原子操作。 也就是先寫進(jìn)一個(gè)臨時(shí)文件,然后將該文件重命名(mv)到最終的名字。 文本編輯器以及 cp, tar 等程序卻并不是這樣操作的,從而導(dǎo)致有可能緩沖了殘缺的文件。 默認(rèn)值 2 表示在訪問文件時(shí)如果發(fā)現(xiàn)修改時(shí)間距離訪問時(shí)間小于 2 秒則不做緩沖。 那個(gè)不幸的訪問者可能得到殘缺的內(nèi)容,但是這種壞影響卻不會通過緩存擴(kuò)大化。 如果你能確保所有的更新操作都是原子操作,那么可以用 0 關(guān)閉此特性。 如果你的系統(tǒng)由于大量的IO操作導(dǎo)致更新緩慢,你就需要增大此值。
apc.enable_cli integer
是否為CLI版本啟用APC功能,僅用于測試和調(diào)試目的才打開此選項(xiàng)。 在正常情況下不是理想的創(chuàng)建、 填充和銷毀 CLI 的每個(gè)請求上的 APC 緩存,但各種測試方案很有用,能夠輕松地使 CLI 版本的 php APC
apc.max_file_size integer
默認(rèn)1M, 對于大于此值的文件將不進(jìn)行緩存.
apc.stat integer
是否啟用腳本更新檢查。 改變這個(gè)指令值要非常小心。 默認(rèn)值 On 表示APC在每次請求腳本時(shí)都檢查腳本是否被更新, 如果被更新則自動重新編譯和緩存編譯后的內(nèi)容。但這樣做對性能有不利影響。 如果設(shè)為 Off 則表示不進(jìn)行檢查,從而使性能得到大幅提高。 但是為了使更新的內(nèi)容生效,你必須重啟Web服務(wù)器(譯者注:如果采用cgi/fcgi類似的,需重啟cgi/fcgi進(jìn)程)。 生產(chǎn)服務(wù)器上腳本文件很少更改, 可以通過禁用本選項(xiàng)獲得顯著的性能提升。
這個(gè)指令對于include/require的文件同樣有效。但是需要注意的是, 如果你使用的是相對路徑,APC就必須在每一次include/require時(shí)都進(jìn)行檢查以定位文件。 而使用絕對路徑則可以跳過檢查,所以鼓勵你使用絕對路徑進(jìn)行include/require操作。
apc.write_lock boolean
在繁忙的服務(wù)器上,Web服務(wù)器第一次被啟動,或者很多文件在同一時(shí)間被修改,APC可能會多次編譯同一個(gè)文件,寫鎖保證只有一個(gè)進(jìn)程將嘗試編譯并緩存未緩存的腳本。其他進(jìn)程試圖使用該腳本將不使用opcode緩存,而不是鎖定和等待緩存生成。
apc.report_autofilter boolean
是否記錄所有由于early/late binding原因而自動未被緩存的腳本。
apc.include_once_override boolean
優(yōu)化include_once()和require_once()函數(shù)以避免執(zhí)行額外的系統(tǒng)調(diào)用。
apc.rfc1867 boolean
開啟監(jiān)控文件上傳進(jìn)度功能
apc.rfc1867_prefix string
用于上傳文件的緩沖項(xiàng)條目名稱前綴
apc.rfc1867_name string
需要由APC處理的上傳文件的隱藏表單項(xiàng)名稱
apc.rfc1867_freq string
用戶上傳文件緩存項(xiàng)的更新頻率。 取值可以是總文件大小的百分比,或者以 "k", "m", or "g" kilobytes, megabytes, or gigabytes 結(jié)尾的絕對尺寸 (大小寫不敏感). 0 表示盡可能快的更新,不過這樣可能會導(dǎo)致上傳速度下降。
apc.rfc1867_ttl bool
TTL for rfc1867 entries.
apc.localcache boolean
使用非鎖定本地進(jìn)程shadow-cache ,它可以減少了向緩沖區(qū)寫入時(shí)鎖之間的競爭。
apc.localcache.size integer
The size of the local process shadow-cache, should be set to a sufficiently large value, approximately half of apc.num_files_hint.
apc.coredump_unmap boolean
啟用APC的信號句柄,例如SIGSEGV信號,當(dāng)信號寫入核心文件。當(dāng)這些信號被接收,APC將試圖取消映射的共享內(nèi)存段,從核心文件中排除它。此設(shè)置可以提高系統(tǒng)的穩(wěn)定性,當(dāng)接受到致命的信號或者采用APC的大型共享內(nèi)存段配置方式。
apc.stat_ctime integer
驗(yàn)證ctime(創(chuàng)建時(shí)間)可以避免SVN或者rsync帶來的問題,確保自上次統(tǒng)計(jì)inode沒有改變。APC通常只檢查mtime(修改時(shí)間)。
apc.canonicalize bool
如果設(shè)置為on,則在no-state 模式(不檢查文件更新)時(shí)會將相對路徑改為絕對路徑。
apc.preload_path string
apc.use_request_time bool
Use the SAPI request start time for TTL.
apc.file_md5 bool
記錄文件的md5值
apc.lazy_functions integer
啟用函數(shù)延遲加載
apc.lazy_classes integer
啟用類延遲加載
php技術(shù):PHP APC配置文件2套和參數(shù)詳解,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。