2011-09-07 65 views
3

摘要:我有PHP安裝爲Apache模塊(5.3.8),並通過PECL安裝APC。用戶高速緩存工作正常,但文件緩存不工作(我有apc.cache_by_default設置爲1,因此這不是問題)APC文件緩存不工作,但用戶的緩存是罰款

詳細信息: 我剛剛得到一個VPS(與的cPanel/WHM)測試我的應用程序使用apc文件緩存和用戶緩存可以獲得什麼收益。

所以我就PHP 5.3編譯成一個DSO(Apache模塊)。

然後通過SSH通過PECL安裝APC。 (首先,我嘗試了使用WHM模塊安裝程序,它也有同樣的問題,所以我通過SSH嘗試它)

所有似乎都很好,phpinfo顯示APC加載和啓用。

然後,我apc.php檢查。一切似乎都OK

但正如我開始測試我的PHP應用程序,在APC的統計信息文件高速緩存信息狀態:

Cached Files 0 (0.0 Bytes) 
Hits 1 
Misses 0 
Request Rate (hits, misses) 0.00 cache requests/second 
Hit Rate 0.00 cache requests/second 
Miss Rate 0.00 cache requests/second 
Insert Rate 0.00 cache requests/second 
Cache full count 0 

這意味着沒有PHP文件已被緩存,即使我已通過超過10瀏覽包含多個PHP文件。所以肯定有一些緩存文件。

但用戶緩存功能正常。

User Cache Information 
Cached Variables 0 (0.0 Bytes) 
Hits 1000 
Misses 1000 
Request Rate (hits, misses) 0.84 cache requests/second 
Hit Rate 0.42 cache requests/second 
Miss Rate 0.42 cache requests/second 
Insert Rate 0.84 cache requests/second 
Cache full count 0 

上述用戶緩存輸出來自APC緩存測試腳本,該腳本試圖檢索和存儲1000個條目並給我時間。一種簡單的基準。

任何人都可以幫助我。
即使apc.cache_by_default = 1,也沒有緩存php文件。

這是我APC配置

Runtime Settings 
apc.cache_by_default 1 
apc.canonicalize 1 
apc.coredump_unmap 0 
apc.enable_cli 0 
apc.enabled 1 
apc.file_md5 0 
apc.file_update_protection 2 
apc.filters 
apc.gc_ttl 3600 
apc.include_once_override 0 
apc.lazy_classes 0 
apc.lazy_functions 0 
apc.max_file_size 1M 
apc.mmap_file_mask  
apc.num_files_hint 1000 
apc.preload_path  
apc.report_autofilter 0 
apc.rfc1867 0 
apc.rfc1867_freq 0 
apc.rfc1867_name APC_UPLOAD_PROGRESS 
apc.rfc1867_prefix upload_ 
apc.rfc1867_ttl 3600 
apc.serializer default 
apc.shm_segments 1 
apc.shm_size 32M 
apc.slam_defense 1 
apc.stat 1 
apc.stat_ctime 0 
apc.ttl 0 
apc.use_request_time 1 
apc.user_entries_hint 4096  
apc.user_ttl 0  
apc.write_lock 1 

而且大多數PHP文件正在20KB,因此,apc.max_file_size = 1M是不是原因。

我試過下面的東西沒有運氣。

  1. 使用'apc_compile_file'強制某些文件進入操作碼緩存而沒有運氣。
  2. 重新安裝APC與調試啓用,但沒有說明會在error_log
  3. 設置mmap_file_mask到/ dev /零和/tmp/apc.xxxxxx,我也設置/ tmp目錄的權限爲777無濟於事
  4. 設置apc.enable_cli = 1,並從CLI運行腳本
  5. 集APC。MAX_FILE_SIZE = 5M(以防萬一)
  6. 切換PHP處理從DSO到的FastCGI在WHM(然後切換回DSO,因爲它並沒有解決問題)
  7. 偶試過重啓容器

任何線索任何人。

注:我貼過這個問題上serverfault.com但並沒有獲得太多的意見或答案,所以我在這裏發帖(如計算器似乎更加積極,我也只拿到了1個月至測試我VPS,看看它是否有共享的任何用途)

回答

2

這似乎是問題與SourceGuardian。
從php.ini註釋掉extension =「ixed.5.3.lin」後,文件緩存現在正常工作。

它被支持人員在我的託管服務提供商處發現,所以贊成這樣的支持。我不會在幾天內找到問題。

思想應該發佈答案,以防其他人絆倒這個問題。