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

Windows 安裝配置 Memcached for PHP 完整圖文教程(含 PHP 7/8 相容版)

     編輯:PHP 相關知識

Memcached 是高效能分散式記憶體快取系統,廣泛用於緩解資料庫壓力、Session 共享、頁面片段快取。本文詳細記錄 Windows 環境下 Memcached 服務端安裝、PHP 擴展配置、驗證與常見問題排查,支援 PHP 5.3 至 8.x。

架構圖解

[PHP 應用] --(TCP 11211)--> [Memcached 服務端] --(記憶體 Hash 表)--> [Key-Value 儲存]

第一階段:安裝 Memcached 服務端

1. 下載預編譯二進制檔

  • 官方釋出頁:GitHub Wiki
  • 推薦穩定版:memcached-1.6.x-windows.zip(含 memcached.exe、pthreadVC2.dll、libevent.dll)

2. 部署與安裝服務

# 解壓至 C:\memcached
# 以管理員身分開啟 CMD / PowerShell
cd C:\memcached

# 安裝為 Windows 服務
memcached.exe -d install

# 啟動服務
memcached.exe -d start

# 驗證執行狀態
memcached.exe -p 11211 -u administrator -l 127.0.0.1 -m 64 -c 1024 -v

常見錯誤:缺少 MSVCP140.dll / VCRUNTIME140.dll → 安裝 Visual C++ Redistributable 2015-2022。

3. 服務管理指令

# 停止
memcached.exe -d stop

# 移除服務
memcached.exe -d uninstall

# 查看執行程序
tasklist | findstr memcached

第二階段:配置 PHP Memcached 擴展

1. 選擇正確的 DLL 版本

關鍵參數三要素:

  • PHP 版本:7.2 / 7.3 / 7.4 / 8.0 / 8.1 / 8.2 / 8.3
  • Thread Safety:TS (Thread Safe, Apache 模組) / NTS (Non-Thread Safe, PHP-FPM/CLI)
  • VC 編譯器:VC15 (PHP 7.2-7.4) / VS16 (PHP 8.0+) — 必須與 PHP 核心一致

下載來源:

2. 安裝步驟

# 1. 解壓取得 php_memcached.dll
# 2. 複製到 PHP 擴展目錄
copy php_memcached.dll C:\php\ext\

# 3. 複製相依 DLL 到 PHP 根目錄(或 System32)
# libmemcached.dll, libsasl.dll, libhashkit.dll 等
copy *.dll C:\php\

# 4. 編輯 php.ini
[memcached]
extension=memcached

# 選用:Session 處理器
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

# 5. 重啟 Web 伺服器 / PHP-FPM
# Apache: httpd -k restart
# Nginx + PHP-FPM: net stop php-fpm && net start php-fpm

3. 常用 php.ini 參數調優

; 容錯移轉
memcached.allow_failover = 1
memcached.max_failover_attempts = 20

; 壓縮閾值(大於此大小啟用壓縮)
memcached.compress_threshold = 2000
memcached.compress_type = "zlib"
memcached.compress_factor = 1.3

; 序列化器
memcached.serializer = "igbinary" ; 或 php, json

; 一致性雜湊(叢集擴容不重新分發)
memcached.hash_strategy = "consistent"
memcached.hash_function = "crc32"

第三階段:驗證與測試

1. phpinfo() 確認

建立 info.php:

<?php phpinfo(); ?>

搜尋 memcached 區塊,確認版本、libmemcached 版本、Session 支援。

2. 功能測試腳本

<?php
$m = new Memcached();
$m->addServer('127.0.0.1', 11211);

// 基本 Set/Get
$m->set('test_key', 'Hello Memcached!', 60);
echo $m->get('test_key') . PHP_EOL;

// 多鍵操作
$m->setMulti(['a' => 1, 'b' => 2, 'c' => 3]);
print_r($m->getMulti(['a', 'b', 'c']));

// 計數器
$m->set('counter', 0);
$m->increment('counter');
$m->increment('counter', 5);
echo "Counter: " . $m->get('counter') . PHP_EOL;

// Session 測試
session_start();
$_SESSION['test'] = 'session in memcached';
echo "Session ID: " . session_id();

常見問題排查表

現象可能原因解決方案
Class 'Memcached' not foundDLL 未載入 / 版本不符核對 PHP 版本、TS/NTS、VC 編譯器;檢查 php.ini extension=memcached
無法連線 127.0.0.1:11211服務未啟動 / 防火牆阻擋net start memcached;Windows 防火牆開放 11211 埠
Session 寫入失敗save_path 格式錯誤 / 權限格式:"host:port",多節點用逗號分隔
資料莫名消失記憶體不足觸發 LRU 淘汰啟動參數 -m 256 設定 256MB;監控 stats
PHP 8.1/8.2 報 Deprecated 警告舊版 memcached 擴展不相容升級至 memcached 3.2.0+ (PECL)

生產環境部署建議

  • 雙節點以上:至少 2 台 Memcached,PHP 端配置多伺服器實現自動容錯
  • 監控指標:get_hits、get_misses、evictions、bytes、curr_connections
  • 安全性:僅允許內網 IP 存取 11211 埠,必要時啟用 SASL 認證
  • 持久化替代:需持久化請改用 Redis,Memcached 重啟資料全失

完成上述步驟,你的 Windows PHP 環境即具備生產級 Memcached 快取能力。建議配合 php-memcached-admin 視覺化管理介面進行日常監控。

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