首頁  >  文章  >  後端開發  >  PHP APC的2套設定檔和參數的解析

PHP APC的2套設定檔和參數的解析

不言
不言原創
2018-06-21 10:40:301324瀏覽

這篇文章主要介紹了PHP APC設定檔2套與參數詳解,需要的朋友可以參考下

一、安裝APC

##編譯參數如下:

./configure --enable-apc --enable-apc-spinlocks --disable-apc-pthreadmutex

安裝過程就不說了, 標準的php擴充安裝模式.


二、2套設定檔

效能高, 不適合頻繁更新:

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

效能稍低:

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套配置關鍵在於apc.stat, 開啟後APC將不會檢查檔案是否更新, 這樣可以減少大量不必要的系統呼叫.

但是, 對於新發布的問題需要重新啟動PHP. 可以根據情況選擇.

##另外, 附上參數說明:

apc.enabled boolean
apc.enabled 可以設為0 來停用APC.主要是用在當APC 被靜態編譯入PHP 時,因為沒有其它方法來禁用了(編譯為DSO , 的時候,可以將php.ini中的extension 行註解掉)。

apc.shm_segments integer
編譯器快取要指派的共享記憶體區塊的數目。如果 APC 用光了共享記憶體但是已經將 apc.shm_size 設為系統所能允許的最大值,可以嘗試增加此值了。

apc.shm_size integer
以 MB 為單位的每個共享記憶體區塊的大小。預設時,有些系統(包括大多數 BSD 變種)的共享記憶體區塊大小非常低。

apc.optimization integer
最佳化等級。設為 0 則停用最佳化器,較高的值則使用更主動的最佳化。期望非常有限的速度提升。尚在試驗中。

apc.num_files_hint integer
Web 伺服器上的被包含或被要求的不同來源檔案的數目的大概估計。如果不確定則設為 0 或去掉此項;此設定主要用在有數千個來源檔案的網站。

apc.user_entries_hint integer
與apc.num_files_hint類似, 根據唯一使用者數來儲存快取變數。如果不能確定則設定為0或或去掉此項。

apc.ttl integer
快取項目在緩衝區中允許停留的秒數。 0 表示永不逾時。建議值為7200~86400 設為 0 表示緩衝區有可能被舊的快取條目填滿,從而導致無法快取新條目。

apc.user_ttl integer
類似apc.ttl,只是針對每位使用者而言,建議值為7200~86400。設為 0 表示緩衝區有可能被舊的快取條目填滿,從而導致無法快取新條目。如果大於0,APC將嘗試刪除過期條目。

apc.gc_ttl integer
快取項目在垃圾回收表中能夠存在的秒數。此值提供了一個安全措施,即在伺服器程序在執行快取的來源檔案時,如果該檔案被修改則舊版本將不會被回收,直到達到此 TTL 為止。設為零將停用此特性。

apc.cache_by_default boolean
預設為on,但可以設為off 並和加號開頭的apc.filters 一起用,則檔案僅在匹配過濾器時被緩存。

apc.filters string
一個以逗號分隔的 POSIX 擴充正規表示式的清單。如果任一個模式符合來源檔案名,則該檔案不被快取。注意用來匹配的檔名是傳遞給 include/require 的檔名,而不是絕對路徑。如果正規表示式的第一個字元是 t則表示任何符合表達式的檔案會被緩存,如果第一個字元是 - 則任何符合項都不會被快取。 -是預設​​值,可以省略掉。

apc.mmap_file_mask string
如果使用--enable-mmap(預設啟用)為APC編譯了MMAP支持, 這裡的值就是傳遞給mmap模組的mktemp風格的文件掩碼(建議值為" /tmp/apc.XXXXXX")。此遮罩用於決定記憶體映射區域是否要被file-backed或shared memory backed。對於直接的file-backed記憶體映射,要設定成"/tmp/apc.XXXXXX"的樣子(剛好6X)。要使用POSIX風格的shm_open/mmap就需要設定成"/apc.shm.XXXXXX"的樣子。你也可以設為"/dev/zero"來為匿名映射的記憶體使用核心的"/dev/zero"介面。不定義此指令則表示強制使用匿名對映。

apc.slam_defense integer
在非常繁忙的伺服器上,無論是啟動服務還是修改文件, 都可能由於多個進程企圖同時緩存一個文件而導致競爭條件。這個選項用於設定進程在處理未被快取的檔案時跳過快取步驟的百分率。例如設為75表示在遇到未被緩存的檔案時有75%的機率不進行緩存,從而減少碰撞幾率。反對使用指令,鼓勵設為 0來停用這個特性。建議該用apc.write_lock指令。

Deprecated by apc.write_lock.

apc.file_update_protection integer
當你在一個運作中的伺服器上修改檔案時,你應該執行原子操作。也就是先寫進一個臨時文件,然後將該文件重新命名(mv)到最終的名字。文字編輯器以及 cp, tar 等程式卻不是這樣操作的,從而導致有可能緩衝了殘缺的檔案。預設值 2 表示在存取檔案時如果發現修改時間距離存取時間小於 2 秒則不做緩衝。那個不幸的訪客可能得到殘缺的內容,但是這種壞影響卻不會透過快取擴大化。如果你能確保所有的更新操作都是原子操作,那麼可以用 0 關閉此特性。如果你的系統因為大量的IO操作導致更新緩慢,你就需要增加此值。

apc.enable_cli integer
是否為CLI版本啟用APC功能,僅用於測試和偵錯目的才開啟此選項。在正常情況下不是理想的創建、 填充和銷毀CLI 的每個請求上的APC 緩存,但各種測試方案很有用,能夠輕鬆地使CLI 版本的PHP APC

apc. max_file_size integer
預設1M, 對於大於此值的檔案將不進行快取.

##apc.stat integer是否啟用腳本更新檢查。改變這個指令值要非常小心。預設值 On 表示APC在每次請求腳本時都檢查腳本是否已更新, 如果被更新則自動重新編譯和快取編譯後的內容。但這樣做對性能有不利影響。如果設為 Off 則表示不進行檢查,使性能大幅提高。但為了讓更新的內容生效,你必須重啟Web伺服器(譯者註:如果採用cgi/fcgi類似的,需重啟cgi/fcgi進程)。生產伺服器上腳本檔案很少更改, 可以透過停用本選項獲得顯著的效能提升。

這個指令對於include/require的檔案同樣有效。但是要注意的是, 如果你使用的是相對路徑,APC就必須在每一次include/require時都進行檢查以定位檔案。而使用絕對路徑則可以跳過檢查,所以鼓勵你使用絕對路徑進行include/require操作。

apc.write_lock boolean在繁忙的伺服器上,Web伺服器第一次被啟動,或者很多檔案在同一時間被修改,APC可能會多次編譯同一個文件,寫鎖保證只有一個進程將嘗試編譯並快取未快取的腳本。其他進程試圖使用該腳本將不使用opcode緩存,而不是鎖定和等待快取生成。

apc.report_autofilter boolean
是否記錄所有因early/late binding原因而自動未被快取的腳本。

apc.include_once_override boolean
優化include_once()和require_once()函數以避免執行額外的系統呼叫。

apc.rfc1867 boolean
開啟監控檔案上傳進度功能

apc.rfc1867_prefix string用於上傳檔案的緩衝項目條目名稱前綴

apc.rfc1867_name string需要由APC處理的上傳檔案的隱藏表單項目名稱

#apc.rfc1867_freq string
使用者上傳檔案快取項目的更新頻率。取值可以是總檔案大小的百分比,或以"k", "m", or "g" kilobytes, megabytes, or gigabytes 結尾的絕對尺寸(大小寫不敏感). 0 表示盡可能快的更新,不過這樣可能會導致上傳速度下降。

apc.rfc1867_ttl boolTTL for rfc1867 entries.

apc.localcache boolean
#使用非鎖定本機程序shadow- cache ,它可以減少了向緩衝區寫入時鎖之間的競爭。

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訊號,當訊號寫入核心檔案時。當這些訊號被接收,APC將試圖取消映射的共享記憶體段,從核心檔案中排除它。此設定可以提高系統的穩定性,當接受到致命的信號或採用APC的大型共享記憶體段配置方式。

apc.stat_ctime integer

驗證ctime(建立時間)可以避免SVN或rsync帶來的問題,並確保自上次統計inode沒有改變。 APC通常只檢查mtime(修改時間)。

apc.canonicalize bool

如果設定為on,則在no-state 模式(不檢查檔案更新)時會將相對路徑改為絕對路徑。

apc.preload_path string

#apc.use_request_time boolUse the SAPI request start time for TTL.

apc.file_md5 bool

記錄檔案的md5值

apc.lazy_functions integer

啟用函數延遲載入

apc.lazy_classes integer

#啟用類別延遲載入

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

在php中產生隨機數的3種方法

PHP中常用的框架功能對照

以上是PHP APC的2套設定檔和參數的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn