Wincache 扩展对 IIS 7.5 没有影响

Wincache extension has no impact on IIS 7.5

在我的 IIS 7.5 网络服务器上,我是 运行 PHP 5.6 以及用于缓存我的 PHP 脚本的操作码的 wincache 扩展 (1.3.6.1)。这应该会减少服务器上的 CPU 负载,因为 PHP 脚本不必在每次收到请求时都重新编译。

但是我没有看到 CPU 负载明显下降。对于 3 个客户端,我的 Web 服务实际上已达到极限(平均 80% cpu 利用率),这与没有 wincache 时一样多。

这是php.ini

中的相关部分
[PHP_WINCACHE]
extension=php_wincache.dll
; Full reference: http://php.net/manual/en/wincache.configuration.php
wincache.fcenabled = 0
wincache.ocenabled = 1
wincache.ucenabled = 0
wincache.fcachesize = 64
wincache.fcndetect = 0
wincache.maxfilesize = 256
wincache.chkinterval = 10
wincache.enablecli = 0

我不得不禁用文件缓存,因为:https://serverfault.com/questions/643458/failure-in-php-minit-functionwincache-with-wordpress-microsoft-azure-and-iis

print_r(wincache_ocache_fileinfo()) 打印如下:

Array
(
    [total_cache_uptime] => 303
    [is_local_cache] => 1
    [total_file_count] => 42
    [total_hit_count] => 32160
    [total_miss_count] => 42
    [file_entries] => Array
    ... (skipped precise file info for brevity)

print_r(wincache_ocache_meminfo()) 给我这个:

Array
(
    [memory_total] => 100663296
    [memory_free] => 99769616
    [num_used_blks] => 1677
    [num_free_blks] => 1
    [memory_overhead] => 26880
)

关于为什么我没有看到 wincache 有任何影响的任何建议?我还能尝试什么来减少网络服务器上的 CPU 负载?

所以看起来 PHP 现在有一个内置的操作码缓存,Zend Opcache。 Activating/configuring 代替 Wincache 为我工作。我现在看到操作码的缓存产生了影响,尽管它没有我预期的那么大。

从 PHP 5.5 开始,可以通过将以下行添加到 php.ini 来激活 Zend Opcache 扩展:

zend_extension=php_opcache.dll
[opcache]
opcache.enable=1

另请参阅此页面,了解如何 configure/tweak Zend Opcode 扩展:http://php.net/manual/en/book.opcache.php