Microsoft has launched a new wincache extension in conjunction with the FASTCGI model, a PHP accelerator that can significantly increase the speed with which PHP apps are used in Windows. All PHP applications can take advantage of the acceleration provided by this extension without having to modify any code. All that needs to be done is to activate the extension and read it by the PHP engine. Contrary to Eaccelerator, Wincache requires the use of NTS (not thread-safe) versions of PHP, and is therefore more suitable for use with fastcgi.
The Wincache extension includes three different kinds of cache usage, and the following will cover the three caches and the facilities they can provide.
php opcode Cache
PHP is a script-running engine that reads input data streams that contain text and PHP instructions, and then outputs another data stream that is typically in HTML format. This means that on a server, the PHP engine reads, parses, encodes, and executes a script whenever the network user needs it. This kind of reading, parsing and coding will add extra burden to the server's CPU and file system, so it will affect the overall operation of the PHP script. The PHP opcode cache is used to store encoded script bytecode in memory so that the PHP engine can be reused for subsequent operations on the same script.
• File Caching
In addition to using opcode caching, the PHP engine also needs to read script files from the file system. When a PHP script is stored in a remote UNC (Universal naming convention) file share, a significant action appears in the file operation. The Windows cache extension includes a file cache to store the contents of PHP script files in memory, which reduces the number of file operations for the PHP engine.
• Relative path caching
PHP scripts often refer to or use files accessed through relative paths. And each relative path must be converted by the PHP engine into an absolute path to be able to use. When a PHP application accesses a lot of PHP files through a relative path, the work of turning the relative path into an absolute path will have a negative impact on the operation of the application. The Windows cache extension provides a specific cache for relative paths, which can be stored to transform maps of relative paths to absolute paths, thereby reducing the total amount of conversion of relative paths.
Installation method:
This extension has two installation packages: one for 5.2.X versions of PHP and the other for PHP 5.3.X.
1. Open the installation package for your PHP version
2. Copy the Php_wincache.dll file to the PHP Extensions folder. Usually this folder is called "ext", and all the PHP binaries are in a folder. Like what:
"C:\Program Files\php\ext"
3. Open the php.ini file in a text editor with the same location. Like what:
"C:\Program Files\php\php.ini"
4. At the end of the above document, add a line:
Extension=php_wincache.dll
5. Save and close php.ini.
6. Restart your server's application library to read the configuration changes.
Configuration requirements:
This extension can only be run on the following configurations:
Windows version:
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 Version:
php 5.2.X, non-thread-safe Build
PHP 5.3 X86, Non-thread-safe VC9 Build
Note: This extension can only be used when the server is running PHP through FASTCGI, and the version of PHP must be NTS (not thread safe). Wincache Accelerator installation and configuration, Wincache1.1.0 for5.3, this everyone can go to Microsoft IIS official download, he will greatly improve your PHP system to run efficiency! If your server is running open source programs, do not need to Zend, we strongly recommend that you use this configuration!
Open the following URL to download the Wincache module
Http://www.iis.net/downloads/microsoft/wincache-extension
Also pull the page to the bottom to find: Download Wincache
and download Wincache 1.1 for PHP 5.3–x86, this file, be sure to note that the Wincache version should correspond to the PHP version, we are using PHP 5.3.21 here so we choose this Wincache 1.1 for PHP 5.3 –x86 this for download.
Download completed, found Wincache-1.1.0-5.3-nts-vc9-x86.exe, this file is an EXE file, do not rush to open, we unpack it
Extract Wincache-1.1.0-5.3-nts-vc9-x86.exe This file, you can find that there is a php_wincache.dll
Here, we need to copy Php_wincache.dll this file to the "D:\Server\php\ext" directory
Then we'll open the IIS Manager and open the Phpmanager management software.
Click the Enable or disnable an extension to open the Php_wincache function
Pull to the bottom, find Php_wincache.dll, right button enable can be enabled Php_wincache
Here we continue to share some information:
Windows Cache Extension APIs for PHP
If a PHP developer wants to use Windows cache Extension for PHP cache application data, Windows cache Extension has an array API available for developers and Windows cache Extension Interactive, including the storage of cache data, access to the system, such as the fast state.
1. The session is stored in Windows Cache.
In PHP preset mode, the session data is stored in the file, Windows Cache Extension for PHP open a set, so that PHP can store session memory, to speed up the session access speed, as long as the changes in PHP The session.save_handler in. INI can be:
[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 is currently supported on the 1.1 version of the transfer feature for the session.
Then restart the IIS server. This time the Wincache Accelerator has been installed!
The following information is from the Microsoft Taiwan official website!
Address: http://www.microsoft.com/taiwan/technet/iis/expand/Windows_Cache_Extension_for_PHP.aspx
Set Value |
Description |
Preset values |
Wincache.fcenabled |
Enable file cache. |
1 |
Wincache.fcenabledfilter |
The IIS platform identification code to use the file cache, separated by commas if there are multiple groups. |
Null |
Wincache.fcachesize |
Maximum memory usage for file cache (MB) |
24 |
Wincache.fcndetect |
Whether to enable file change detection (Opcode cache to determine whether the file changes and clear the Opecode cache). |
1 |
Wincache.maxfilesize |
Maximum single file size to be placed in cache (KB) |
256 |
Wincache.ocenabled |
Whether to enable Opcode Cache |
1 |
Wincache.ocenabledfilter |
To use the IIS platform identifier for Opcode Cache, separated by commas if there are multiple groups. |
Null |
Wincache.ocachesize |
Maximum memory usage for Opcode Cache (MB) |
96 |
Wincache.filecount |
Define the maximum number of files that are expected to be fetched quickly, which can be preconfigured when PHP is initialized, but if the number is actually exceeded, PHP will be reconfigured. |
4096 |
Wincache.chkinterval |
Define the cycle time (in seconds) of the PHP check cache. |
30 |
Wincache.ttlmax |
Sets the maximum time (in seconds) that a cache is persisted when not in use. |
1200 |
Wincache.enablecli |
Sets whether command line mode is enabled |
0 |
Wincache.ignorelist |
Set which files are not included in the cache, and if you have multiple files, use the line symbol "|" to separate. |
Null |
Wincache.namesalt |
Set a salt value to avoid collisions with key values that are set when the user is fast fetching. |
Null |
Wincache.ucenabled |
Whether to enable the user cache. |
1 |
Wincache.ucachesize |
Sets the maximum memory usage (MB) of the user's cache. |
8 |
After you have set up, you will recycle the PHP application's set area, or restart IIS before it takes effect.
Type |
Open or close |
How much memory is allocated |
Maximum number |
File caching |
Fcenabled= 1/0 |
Fcachesize= 128M |
Single Maximum file maxfilesize |
OpCode caching |
Ocenabled =1/0 |
Ocachesize= 128M |
Maximum number of files FileCount 4096 |
Path caching |
|
|
|
Session Cache |
|
Scachesize |
|
|
Ucenabled |
Ucachesize |
|
Wincache.fcenabled= 1 (ON) 0 (off) enables or turns off the file caching feature
The wincache.fcachesize= 128M defines the maximum memory space (in megabytes) allocated for the file cache. If the total cache file size exceeds the set value, most of the stale files are removed from the file cache.
Wincache.maxfilesize =256m defines the size of a single file to be cached. If the file size exceeds this value, it will not be cached. This setting is limited to file caching.
Wincache.ocenabled =1 (ON) 0 (off) turn on or off the opcode caching feature
Wincache.ocachesize= 128M defines the maximum memory space allocated for opcode caching
Wincache.filecount 4096 1024 16384 defines how many files will be cached so that the memory space can be allocated at the outset. If the number of files exceeds the preset value, the extension will reallocate more memory space as needed.
Wincache.chkinterval= 2 Php_ini_system Define how often (in seconds) This extension examines file changes to update the cache
Wincache.ttlmax 1200 60 7200 defines the maximum presence time of the entry in the cache without being used.
Wincache.ignorelist defines a series of files that should not be cached by this extension. File lists can only specify files in the form of file names, and the "|" Interval. For example:wincache.ignorelist = "index.php|misc.php|admin.php"
Wincache.namesalt No value no no value No value Php_ini_system defines a string that is used when naming the cached object in memory. This is done to prevent errors when other applications in the server attempt to use shared memory.
Note: Wincache and Zendloader conflict, so the two can only choose one, because the Wincache is memory-level optimization, the speed of natural than zendloader much faster, this according to the specific configuration options. How the program needs to Zend encryption and decryption and then use Wincache words that can only turn off the Wincache file caching function.