首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP APC 緩存深度解析:原理、安裝與配置優化全攻略

     編輯:PHP 綜合知識

APC 緩存簡介

APC(Alternative PHP Cache)是一個開源的 PHP 擴展,提供操作碼緩存與用戶數據緩存兩大功能,能顯著提升 PHP 應用性能。

系統緩存(操作碼緩存)

APC 將 PHP 腳本編譯後的操作碼存入共享內存,避免重複編譯。默認緩存 3600 秒(1 小時),可通過 apc.ttl=0 設置為永不過期(需重啟 Web 服務器使代碼更新生效)。

用戶數據緩存

通過 apc_store()、apc_fetch() 等函數操作,適合緩存較小、讀多寫少的數據(如配置信息、會話數據)。大數據量場景建議使用 Memcached/Redis。

緩存 Key 生成機制

  • 用戶緩存:基於用戶提供的字符串 Key,經 PHP 內核哈希函數(zend_inline_hash_func)生成哈希值。
  • 系統緩存:取決於 apc.stat 設置:
    • On:基於文件的 device + inode 生成,文件修改自動重新編譯。
    • Off:基於文件絕對路徑生成,性能更高但需手動重啟服務器更新。

APC 模塊安裝指南

Windows 環境

  1. 從 PECL 下載對應 PHP 版本的 php_apc.dll,放入 ext 目錄。
  2. 修改 php.ini 啟用擴展並配置關鍵參數:
extension=php_apc.dll
apc.rfc1867 = on
apc.max_file_size = 100M
upload_max_filesize = 100M
post_max_size = 100M

Linux 環境(編譯安裝)

wget https://pecl.php.net/get/APC-3.1.13.tgz
tar -zxvf APC-3.1.13.tgz
cd APC-3.1.13
/usr/local/php/bin/phpize
./configure --enable-apc --enable-mmap --enable-apc-spinlocks --disable-apc-pthreadmutex --with-php-config=/usr/local/php/bin/php-config
make && sudo make install

編輯 /usr/local/php/etc/php.ini 添加配置:

extension = "apc.so"
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 128M
apc.ttl = 7200
apc.user_ttl = 7200
apc.gc_ttl = 3600
apc.max_file_size = 10M
apc.stat = 1
apc.write_lock = 1

重啟 PHP-FPM 或 Apache 使配置生效。

核心配置參數詳解與優化建議

參數推薦值說明
apc.shm_size128M~512M共享內存大小,根據項目代碼體積與用戶數據量調整
apc.ttl0 或 7200系統緩存存活時間,0 為永久(需重啟更新),生產環境建議 7200 秒
apc.user_ttl7200用戶緩存存活時間
apc.gc_ttl3600垃圾回收間隔
apc.stat1 (開發) / 0 (生產)是否檢查腳本修改,生產環境關閉可提升性能
apc.write_lock1寫入鎖,防止並發寫入衝突
apc.spinlocks啟用使用自旋鎖替代互斥鎖,提升高併發下性能

監控與管理

APC 自帶 apc.php 管理界面,部署後可查看緩存命中率、內存使用、條目列表等。**務必修改默認管理員賬號密碼**。

適用場景與避坑指南

  • ✅ 適合:操作碼緩存、小型配置數據、會話存儲(單機)、預定義常量緩存。
  • ❌ 不適合:頻繁變更的用戶數據、大對象緩存、分佈式集群環境(無同步機制)。
  • ⚠️ 注意:PHP 5.5+ 內置 Zend OPcache 已取代 APC 的操作碼緩存功能,新項目建議使用 OPcache + Redis/Memcached 組合。

APC 曾是 PHP 性能優化的利器,理解其原理與配置對維護老項目仍有重要價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved