您的位置:首页技术开发PHP 学院 → Windows缓存进行PHP的扩展 !

Windows缓存进行PHP的扩展 !

时间:2009/12/21 8:51:00来源:本站整理作者:我要评论(0)

内容概要:
PHP的Windows缓存扩展时一个可以显著增加PHP应用在Windows环境下使用速度的PHP加速器。所有的PHP应用都能够利用这个扩展所提供的加速功能而不需要修改任何代码。所有需要做的就是将这个扩展激活并被PHP引擎读取。
Windows缓存扩展包括了三种不同种类的缓存使用,下面将要分别介绍这三种缓存和他们所能提供的便利。

?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的情况下使用。
设置 默认值 最小值 最大值 改变文件 功能描述
wincache.fcenabled 1 (On) 0 (Off) 1 (On) PHP_INI_ALL 启用或关闭文件缓存功能
wincache.fcachesize 128 32 256 PHP_INI_SYSTEM 定义为文件缓存分配的最大内存空间(以兆字节计算)。如果总的缓存文件的大小超过设定值,那么大部分陈旧的文件会被从文件缓存中剔除。
wincache.maxfilesize 256 10 2048 PHP_INI_SYSTEM 定义单独一个待缓存的文件的大小(以千字节为单位)。如果文件大小超出这个值,将不被缓存。这个设定仅限于文件缓存。
wincache.ocenabled 1 (On) 0 (Off) 1 (On) PHP_INI_ALL 开启或关闭操作码缓存功能
wincache.ocachesize 128 32 256 PHP_INI_SYSTEM 定义为操作码缓存分配的最大内存空间(以兆字节为单位)
wincache.filecount 4096 1024 16384 PHP_INI_SYSTEM 定义多少文件会被缓存,这样就能在一开始就分配内存空间。如果文件个数超过预设值,扩展会根据需要重新分配更多的内存空间。
wincache.chkinterval 30 2 300 PHP_INI_SYSTEM 定义每隔多久(按秒计算)本扩展会检查文件变化来更新缓存
wincache.ttlmax 1200 60 7200 PHP_INI_SYSTEM 定义缓存中的入口在不被使用情况下最大的存在时间。
wincache.ignorelist no value no value no value PHP_INI_ALL 定义一系列不应被本扩展缓存的文件。文件列表只能以文件名的形式指定文件,并以“|”间隔。
For example:

wincache.ignorelist = "index.php|misc.php|admin.php"
wincache.namesalt no value no value no value PHP_INI_SYSTEM 定义一个字符串,在给内存中的被缓存物命名时使用。这么做是为了防止当服务器中其他的应用试图使用共享内存时发生错误。
   

    
配置FastCGI:
服务器里的FastCGI模块有最大允许进程数的设定,用来控制正在运行的php-cgi.exe进程。这个进程是服务器生成的,用来处理PHP请求的。为了达到最优化,我们推荐在您特有的运行环境下精心调制这个设置,从每个内核8-10个进程开始(比如说一个四核机器最大进程数=32)
本扩展为了防止重复的频繁的CPU操作,比如解析和扩展PHP源码,将编码后的PHP操作码放在共享内存中。这意味着当本扩展被激活时,服务器处理PHP请求需要更少的CPU循环。正因为这样,原先的FastCGI最大允许进程数配置可能不再适用,因此增大最大允许进程数可能很有必要。
To increase the maxInstances value on IIS 7 run this command from an elevated command line prompt:
appcmd.exe set config -section:system.webServer/fastCgi /[fullPath='C:\PHP\php-cgi.exe',arguments=''].maxInstances:"32" /commit:apphost
注意:用你的服务器里的php-cgi.exe的路径来替换上面的整个路径。
或者你也也可以编辑<fastCGI>里的applicationHost.config文件。它位于:
C:\Windows\System32\inetsrv\config\ folder:
<fastCgi>
<application fullPath="C:\PHP\php-cgi.exe" maxInstances="32">
    <!-- Some other settings may go here-->
</application>
</fastCgi>
要增加IIS5.1和IIS6.0环境下的最大允许进程数清运行一下命令:
>cscript C:\windows\system32\inetsrv\fcgiconfig.js -set -section:"PHP" –MaxInstances:32
注意: 如果需要,请将文件重命名。.
或者你也可以直接编辑 fcgiext.ini文件。它位于:
C:\Windows\System32\inetsrv\ folder:
[PHP]
ExePath=C:\PHP\php-cgi.exe
;some other settings may go here
MaxInstances=32
当你测试本扩展的实际性能,确保降低你的CPU使用率。如果你发现你的CPU没有完全使用,那么增加你的FastCGI最大允许进程数来获得更好的性能吧!


附带函数:
函数名称 描述 返回值
array wincache_fcache_fileinfo() 获取储存在文件缓存里的文件的信息。 缓存文件的列表和详细信息,读取失败返回FALSE
array wincache_fcache_meminfo() 获取文件缓存内存使用情况的信息 一组关于内存使用情况的数据,读取失败返回FALSE
array wincache_ocache_fileinfo() 获取储存在操作码缓存里的文件的信息。 缓存文件的列表和详细信息,读取失败返回FALSE
array wincache_ocache_meminfo() 获取操作码缓存内存使用情况的信息 一组关于内存使用情况的数据,读取失败返回FALSE
array wincache_rplist_fileinfo() 获取关于缓存中的相对文件路径和绝对文件路径的地图的信息 一组关于缓存中的文件路径的数据,读取失败返回FALSE
array wincache_rplist_meminfo() 获取相对路径内存使用情况的信息 一组关于内存使用情况的数据,读取失败返回FALSE


使用例子:
获取关于文件缓存的入口请使用下面代码:
<pre>
<?php
print_r(wincache_fcache_fileinfo());
?>
</pre>
代码执行后会输出与下面类似的结果:
Array
(
    [total_file_count] => 1
    [total_hit_count] => 0
    [total_miss_count] => 1
    [file_entries] => Array
        (
            [1] => Array
                (
                    [file_name] => C:\inetpub\wwwroot\checkcache.php
                    [add_time] => 1
                    [use_time] => 0
                    [last_check] => 1
                    [hit_count] => 1
                    [function_count] => 0
                    [class_count] => 0
                )
            [2] => Array (...iterates for each cached file)
        )
)

ps:该项设置可以使网站访问量提供高很多,大型门户网站甚至服务器的cpu利用率降低至平局低于10%左右


 

相关视频

    没有数据

相关阅读 php输出内容乱码解决方法php批量获取首字母(汉字、数字、英文)我的php文件怎么打开_如何打开php文件的办法破解防盗链图片的php函数php显示错误信息方法如何在IIS7下设置支持PHP程序PHP技巧--通过COM使用ADODB成就PHP高手的五个必经之路

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 nginx-1.0.4的容器源码如何在xp系统用IIS搭建 nginx-1.0.4的容器源码分析—数组结构ngx_aPHP编程技巧提高PHP开发效率php站内全文搜索代码如何在xp系统用IIS搭建php环境

人气排行 如何在xp系统用IIS搭建php环境php输出内容乱码解决方法php站内全文搜索代码gcov-dump原理分析_Linux平台代码覆盖率测试如何架设PHP服务器nginx-1.0.4的容器源码分析—数组结构ngx_a用PHP实现文件管理系统PHP编程技巧提高PHP开发效率