微軟新推出了配合FastCGI模式使用的WinCache擴展,這是一個可以顯著增加PHP應用在Windows環境下使用速度的PHP加速器。所有的PHP應用都能夠利用這個擴展所提供的加速功能而不需要修改任何代碼。所有需要做的就是將這個擴展激活并被PHP引擎讀取。與eAccelerator正好相反的是WinCache要求使用NTS(非線程安全)版本的PHP,因此更適合與FastCGI配合使用。
WinCache擴展包括了三種不同種類的緩存使用,下面將要分別介紹這三種緩存和他們所能提供的便利。
•PHP操作碼緩存
PHP是一個腳本運行引擎,他讀入包含文字和PHP指令的輸入數據流,再輸出另一個通常是HTML格式的數據流。這就是說在一個服務器上,每當網絡用戶需要,PHP引擎就會讀入、解析、編碼和執行某個腳本。而這種讀入、解析和編碼會給服務器的CPU和文件系統增加額外的負擔,因此會影響到PHP腳本的整體運行。PHP操作碼緩存就是用來把編碼后的腳本字節碼儲存在內存中從而能讓PHP引擎在后來對同一腳本的操作中重復使用。
•文件緩存
除了使用操作碼緩存,PHP引擎還需要從文件系統里讀取腳本文件。當PHP腳本儲存在一個遠程的UNC(統一命名約定)文件共享中,文件操作會出現一個顯著的動作。Windows緩存擴展包括了一個文件緩存來在內存中儲存PHP腳本文件的內容,這樣就減少了PHP引擎的文件操作數量。
•相對路徑緩存
PHP腳本經常會引用或使用通過相對路徑訪問的文件。而每一個相對路徑都必須被PHP引擎轉化成絕對路徑才能夠使用。當一個PHP應用通過相對路徑訪問很多的PHP文件,將相對路徑轉化成絕對路徑的工作就會對應用的運行產生消極影響。Windows緩存擴展提供了專門針對相對路徑的緩存,可以將相對路徑到絕對路徑的轉換地圖儲存起來,從而減少了相對路徑的總轉化量。
安裝方法:
這個擴展有兩個安裝包:一個是針對5.2.X 版本的PHP,另一個是針對PHP 5.3.X。
1. 打開適合你的PHP版本的安裝包
2. 將php_wincache.dll文件復制到PHP擴展的文件夾。通常這個文件夾叫做“ext”,和所有的PHP二進制文件在一個文件夾下。比如:
“C:/Program Files/PHP/ext”
3. 用文本編輯器打開php.ini文件,位置同上。比如:
“C:/Program Files/PHP/php.ini”
4. 在上面這個文件的最后加上這么一行:
Extension=php_wincache.dll
5. 保存并關閉php.ini。
6. 將你的服務器的應用庫重啟以讀取配置的變化。
配置要求:
此擴展只能在以下的配置上運行:
Windows 版本:
• Windows XP SP3 with IIS 5.1 and FastCGI Extension
• Windows Server 2003 with IIS 6.0 and FastCGI Extension
• Windows Vista SP1 with IIS 7.0 and FastCGI Module
• Windows Server 2008 with IIS 7.0 and FastCGI Module
• Windows 7 with IIS 7 and FastCGI Module
• Windows Server 2008 R2 with IIS 7.0 and FastCGI Module
PHP版本:
• PHP 5.2.X, Non-thread-safe build
• PHP 5.3 X86, Non-thread-safe VC9 build
注意:此擴展只能在服務器通過FastCGI運行PHP的情況下使用,PHP的版本必須是NTS(非線程安全)的。WinCache加速器安裝與配置,Wincache1.1.0 for5.3,這個大家可以去微軟IIS官方下載,他將極大地提高您的PHP系統運行效率!如果您的服務器運行的都是開源程序,不需要zend,強烈建議您使用這個配置!
打開以下網址,下載Wincache模塊
http://www.iis.net/downloads/microsoft/wincache-extension
同樣們把網頁拉到最下面找到:Download WinCache
并下載 WinCache 1.1 for PHP 5.3 – x86 ,這個文件,這里一定要注意,Wincache版本要與PHP版本相對應,我們在這里采用的是PHP 5.3.21 所以我們選擇這WinCache 1.1 for PHP 5.3 – x86 這個進行下載。
下載完成后,發現wincache-1.1.0-5.3-nts-vc9-x86.exe,這個文件是個EXE文件,先不要急于打開,我們解壓它
解壓wincache-1.1.0-5.3-nts-vc9-x86.exe這個文件后,可以發現里面有一個 php_wincache.dll
在這里,我們需要把php_wincache.dll這個文件復制到 “D:/Server/php/ext” 目錄下
然后我們再打開IIS管理器,打開PHPManager管理軟件
點擊Enable or disnable an extension,開啟php_wincache 功能
拉到最下面,找到php_wincache.dll ,右鍵Enable 就可以啟用php_wincache了
下面為大家繼續分享一些資料:
Windows Cache Extension APIs for PHP
若 PHP 開發人員想要利用 Windows Cache Extension for PHP 快取應用程式資料時,Windows Cache Extension 有提供數組 API 可供開發人員與 Windows Cache Extension 互動,包含儲存快取資料、取得系統的快取狀態等。
1. 將 session 存放到 Windows Cache 中。
在 PHP 的預設模式中,session 資料是儲存在檔案中,Windows Cache Extension for PHP 開放一個設定,讓 PHP 可以將 session 儲存到記憶體中,以加快 Session 存取的速度,只要修改 php.ini 中的 session.save_handler 即可:
[Session]
; Headler used to store/retrieve data.
; session.seve_handler = files <- original configuration
session.save_handler = wincache <- apply session store into Windows Cache Extension
Windows Cache Extension 針對 Session 的轉存功能目前在 1.1 版以上才支援。
然后重新啟動IIS服務器。這個時候WinCache加速器已經安裝完畢!
以下資料說明來源于微軟臺灣官方網站!
地址:http://www.microsoft.com/taiwan/technet/iis/expand/Windows_Cache_Extension_for_PHP.aspx
設定值 | 說明 | 預設值 |
wincache.fcenabled | 啟用檔案快取。 | 1 |
wincache.fcenabledfilter | 要使用檔案快取的 IIS 站臺識別碼,若有多組時以逗號分隔。 | NULL |
wincache.fcachesize | 檔案快取的最大記憶體使用量(MB) | 24 |
wincache.fcndetect | 是否要啟用檔案變更偵測(在 Opcode Cache 時會判斷檔案是否有變更而清除 Opecode Cache)。 | 1 |
wincache.maxfilesize | 可放進快取的最大單一檔案大小(KB) | 256 |
wincache.ocenabled | 是否啟用 Opcode Cache | 1 |
wincache.ocenabledfilter | 要使用 Opcode Cache 的 IIS 站臺識別碼,若有多組時以逗號分隔。 | NULL |
wincache.ocachesize | Opcode Cache 的最大記憶體使用量(MB) | 96 |
wincache.filecount | 定義預期要快取的最大檔案數量,可在 PHP 初始化時預先配置好,但若實際超出此數量時,PHP 會重新配置。 | 4096 |
wincache.chkinterval | 定義 PHP 檢查快取的週期(秒)。 | 30 |
wincache.ttlmax | 設定快取在不使用時,存留的最長時間(秒)。 | 1200 |
wincache.enablecli | 設定是否啟用指令列(Command Line)模式 | 0 |
wincache.ignorelist | 設定哪些檔案不列入快取,若有多檔時,要使用管線符號”|”來分隔。 | NULL |
wincache.namesalt | 設定一個 salt 值以避免使用者快取時設定的 key 值有碰撞的現象。 | NULL |
wincache.ucenabled | 是否啟用使用者快取。 | 1 |
wincache.ucachesize | 設定使用者快取的最大記憶體使用量(MB)。 | 8 |
設定完后都要重新回收PHP應用程式的集區,或是重新啟動 IIS 才會生效。
類型 | 開啟或關閉 | 分配多少內存 | 最大數 |
文件緩存 | fcenabled= 1 /0 | fcachesize= 128M | 單個最大文件maxfilesize |
操作碼緩存 | ocenabled =1/ 0 | ocachesize= 128M | 最多文件數filecount 4096 |
路徑緩存 | |||
session緩存 | scachesize | ||
ucenabled | ucachesize |
wincache.fcenabled= 1 (On) 0 (Off) 啟用或關閉文件緩存功能
wincache.fcachesize= 128M 定義為文件緩存分配的最大內存空間(以兆字節計算)。如果總的緩存文件的大小超過設定值,那么大部分陳舊的文件會被從文件緩存中剔除。
wincache.maxfilesize =256M 定義單獨一個待緩存的文件的大小。如果文件大小超出 這個值,將不被緩存。這個設定僅限于文件緩存。
wincache.ocenabled =1 (On) 0 (Off)開啟或關閉操作碼緩存功能
wincache.ocachesize= 128M 定義為操作碼緩存分配的最大內存空間
wincache.filecount 4096 1024 16384 定義多少文件會被緩存,這樣就能在一開始就分配內存空間。如果文件個數超過預設值,擴展會根據需要重新分配更多的內存空間。
wincache.chkinterval= 30 2 300 PHP_INI_SYSTEM 定義每隔多久(按秒計算)本擴展會檢查文件變化來更新緩存
wincache.ttlmax 1200 60 7200 定義緩存中的入口在不被使用情況下最大的存在時間。
wincache.ignorelist 定義一系列不應被本擴展緩存的文件。文件列表只能以文件名的形式指定文件,并以“|”間隔。For example: wincache.ignorelist = "index.php|misc.php|admin.php"
wincache.namesalt no value no value no value PHP_INI_SYSTEM 定義一個字符串,在給內存中的被緩存物命名時使用。這么做是為了防止當服務器中其他的應用試圖使用共享內存時發生錯誤。
注意事項:wincache 和zendloader沖突,所以二者只能選其一,由于 wincache是內存級優化,速度自然比 zendloader快很多,這個根據具體配置選擇。如何程序需要zend加密解密 然后又要用wincache的話 那只能關閉wincache的文件緩存功能了。
新聞熱點
疑難解答
圖片精選