“Runtime Settings”:這裡展示的是正在啟動並執行apc的配置資訊,我們可以根據需求來調整apc參數,參數的設定在php.ini中進行。
apc參數比較多,下面就幾個比較常用的參數做下說明:
1 apc.cache_by_default和apc.filters:apc.cache_by_default,是否開啟系統緩衝,通常跟apc.filters結合使用,用來控制需要進行緩衝和不需要緩衝的php檔案。apc.filters參數的值是一個以逗號分隔的 POSIX 擴充Regex的列表,如果Regex的第一個字元為+,則匹配的檔案都會被緩衝,如果為-,則匹配的檔案都不會被緩衝。
demo1:關閉系統緩衝,僅緩衝以a和b開頭的檔案,其他檔案不會被緩衝
apc.cache_by_default = 0 apc.filters=+a.*.php,+b.*.php
demo2:開啟系統緩衝,不緩衝以a和b開頭的檔案,其他檔案將會被緩衝
apc.cache_by_default = 1 apc.filters = -a.*.php,-b.*.php
2 apc.shm_size和apc.shm_segments:apc.shm_size,以 MB 為單位的每個共用記憶體塊的大小。系統緩衝和使用者緩衝共用,可以通過調整該值來改變apc的共用記憶體塊的大小。如果apc.shm_size的值已經設定為系統所能達到的最大值仍然不夠用的時候,我們就需要藉助apc.shm_segments,該選項的含義為編譯器緩衝要分配的共用記憶體塊的數目,我們可以通過調整該值來改變共用記憶體塊的數目(但是在測試的時候,該選項並未生效)。
3 apc.stat:用於檢測指令碼是否更新,預設開啟,每次請求指令碼的時候都檢測指令碼是否更新,這樣做對效能有不利的影響,如果生產環境中的指令檔並非頻繁更新,我們可以關閉它,這樣效能將會大幅提高,缺點就是指令碼更新的時候需要重啟web伺服器(如果是nginx,重啟php-fpm)使之生效。
4 apc.ttl和apc.user_ttl:緩衝條目在緩衝區允許逗留的秒數。不同之處在於,apc.ttl針對的是系統緩衝,apc.user_ttl針對的是使用者緩衝。測試的時候這兩個選項並沒有很好的表現,例如設定值為10,按理說10秒如果沒有訪問緩衝條目,這些緩衝條目將會被清除,但是10秒過後這些條目卻仍然存在,並沒有被清除。
5 apc.num_files_hint和apc.user_entries_hint:Web 服務器上的被包含或被請求的不同源檔案的數目的大概估計,apc.num_files_hint針對系統緩衝,apc.user_entries_hint針對使用者緩衝。跟緩衝時間一樣,緩衝數量好像也沒什麼作用,例如數量設定為3,超過3個檔案仍會被緩衝,不知道為什麼。
其他的參數不再做過多的介紹,關於緩衝時間和緩衝數量或許是開啟檔案不對,總是不能得到預期的效果,如果有哪位對這幾個參數有深入的理解和研究,希望不吝賜教。
小結:
1 apc的官方手冊中明確說明,apc有兩個主要的配置選項,一個是分配多少記憶體給apc(選項apc.shm_size),一個是每次請求apc是否檢查檔案修改(選項apc.stat),可見這兩個選項對於apc來說至關重要,有時間可以重點研究下這兩項。
2 apc.cache_by_default開啟和關閉僅會影響到系統緩衝,對於使用者緩衝無影響。
3 apc的共用記憶體塊是系統緩衝和使用者緩衝共用的。
4 apc 3.1.15-dev版本,php 5.5.10,作業系統centos6.5,設定apc.shm_segments的時候並未生效。
5 apc緩衝滿的情況下系統緩衝和使用者緩衝表現不同,如果是系統快取檔案在請求的時候達到了緩衝上限,則apc會清除除了該請求的所有其他系統快取檔案,如果是使用者緩衝變數在請求的時候達到了緩衝上限,則會清除除了該請求變數外的所有其他使用者緩衝變數,也就是說系統緩衝和使用者緩衝之間不會相互影響。
以上就介紹了php的apc擴充淺析(二),包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。