wincache这个php内存缓存组件,自从2017年8月3日之后,到最近差不多2年未更新,由于偶的大部分环境都是用的php7.2 7.3,所以这个内存缓存组件对偶来说是非常重要的,也就一直在关注这方面的消息。今天早上又重新上了微软官方iis开发论坛,无意中看到了一个帖子,原来在一个星期之前,官方的开发人员已经发布了最新php7.3和7.4的更新,这真是让人有些意外,毕竟这个缓存组件php官方都停止了开发,只是部分前微软开发人员在维护这个项目,可能是之前请求的人数已经较多,大家也非常关心wincache在今后是否还会维护这个问题,所以他们又重新编译了dll,这是个非常好的消息,对于大部分使用wincache的人来说,至于这个内存缓存组件的作用,偶就不细说,因为用过才知道。
php7.3 nts x64配置wincache,方法和之前的版本一样的,这里偶提供下自己的配置方法,已经10多年了。
先到开发维护站点找到这个项目,下载最新或你需要的版本,偶下载的是 wincache-2.0.0.8-dev-7.3-nts-vc15-x64,因为环境是用的2012r2 2019 64位,所以用64位版本稳定些。
下载之后是个.exe文件,直接解压,里面会有几个文件和一个文档,直接复制 php_wincache.dll,因为要用的就是这个文件,路径就是得到到php\ext\。配置的具体方法就不细说,因为之前发布过环境配置的教程,里面都有配置过,这里贴下自己的php.ini wincache代码,偶把目前到的尾巴都贴出来,因为顺序不能随便换,否则会出点问题,你只用你需要的wincache部分。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
[PHP_EXIF]
[opcache]
zend_extension=php_opcache.dll
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=12000
opcache.max_wasted_percentage=60
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=2
opcache.revalidate_path=0
opcache.save_comments=1
opcache.fast_shutdown=0
opcache.enable_file_override=0
opcache.optimization_level=0xffffffff
opcache.inherited_hack=1
opcache.dups_fix=0
opcache.blacklist_filename=
opcache.max_file_size=0
opcache.consistency_checks=0
opcache.force_restart_timeout=180
opcache.error_log=
opcache.log_verbosity_level=1
opcache.preferred_memory_model=
opcache.protect_memory=0
opcache.restrict_api=
opcache.mmap_base=0x20000000
opcache.file_cache="C:\Windows\Temp"
opcache.file_cache_only=0
opcache.file_cache_consistency_checks=1
opcache.file_cache_fallback=1
opcache.huge_code_pages=1
[wincache]
extension=php_wincache.dll
wincache.fcenabled = 1
wincache.fcachesize = 1024M
wincache.maxfilesize = 2M
wincache.filecount 16384
wincache.ocenabled = 1
wincache.ocachesize = 1024M
wincache.chkinterval = 300
wincache.ttlmax 7200
wincache.ignorelist = "index.php|wp-login.php|user.php"
wincache.ucenabled = 1
wincache.fcndetect = 1
wincache.fcenabledfilter = NULL
wincache.enablecli = 1
wincache.ucachesize = 128
wincache.scachesize = 128
[igbinary]
extension=php_igbinary.dll
igbinary.compact_strings=On
;session.serialize_handler=igbinary
;apc.serializer=igbinary
[redis]
extension=php_redis.dll
;session.save_handler = redis
;session.save_path = "tcp://127.0.0.1:6379"
[PHP_BZ2]
extension=php_bz2.dll
[PHP_CURL]
extension=php_curl.dll
[PHP_FILEINFO]
extension=php_fileinfo.dll
[PHP_GD2]
extension=php_gd2.dll
[PHP_GETTEXT]
extension=php_gettext.dll
[PHP_GMP]
extension=php_gmp.dll
[PHP_IMAP]
extension=php_imap.dll
[PHP_MBSTRING]
extension=php_mbstring.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
[PHP_OPENSSL]
extension=php_openssl.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_PDO_SQLITE]
extension=php_pdo_sqlite.dll
[PHP_PGSQL]
extension=php_pgsql.dll
[PHP_SOAP]
extension=php_soap.dll
[PHP_SOCKETS]
extension=php_sockets.dll
[PHP_SQLITE3]
extension=php_sqlite3.dll
[PHP_TIDY]
extension=php_tidy.dll
[PHP_XMLRPC]
extension=php_xmlrpc.dll
[PHP_EXIF]
extension=php_exif.dll
|
改完后打开cmd,然后net stop w3svc & net start w3svc & exit 这段命令打上就可以用了。至于是否生效和有作用,这个打开你当前环境的缓存目录,一般iis是C:\Windows\Temp,这里一般积累了大量平时服务器环境运行的文件和缓存及报错那些文件,所以要先停止服务器,把整个目录删除,然后再启动,再打开网站和测试,如果这里产生了类似92eb5ffee6ae2fec3ad71c777531578 dcce033c45cc2ce1627d55f1c5fd696 这样的文件目录,就说明wincache已经在工作,它是正常的,然后打开里面目录,会看到当前已经缓存到内存当中的wincache缓存文件,像偶的本地环境站点在\G\w\w\b ,所以会看到相应的缓存文件目录。
偶现在环境是php7.3.6和wp5.2.2,本地2012r2和远程2012r2 2016 2019都正常的,如果遇到程序后台无法登录或崩溃的情况,可以去除这个缓存。这里说明一下,为什么有redis或memcache,还要用wincache呢?因为这是两种不同类型的缓存,一个是文件和数据库的,而wincache是专门php的缓存,所以不会冲突,用它只会让你的php更快和更稳定。这也是偶多年来一直用它的原因。