对许多代码文件说,特别是含有很多包含文件(include or require)。它们需要花费更多的时间和解析并产生中间代码。 即使PHP代码文件没有发生改变,这个执行过程还会严格的按照流程执行。也就是说,无论你的应该程序是否发生改变,每次调用的时候,都需要重新编译生成opcode码。(其实这就是编译缓存存在的理由)这个流程不仅仅发生在主要的代码文件,对于每一次的include和require来说,都会执行这个流程。(这是可以继续优化的)那些地方可以优化呢?将mod_php fast-cgi化,避免每次都要加载这个模块,全讯网资讯这个模块还要每次都去初始化php的解释环境。缓存php文件的opcode码,这样话,避免每次都去编译。APC可用用来实现第2点。编译缓存去掉了执行PHP过程中的解析过程,所以它对含有大量PHP代码的应用程序是非常有效的。通常情况下可以提升2-3倍以上的速度。对于包含大量include文件的项目,编译缓存更现实出全讯网资讯的优越性。include并不会被编译缓存进行缓存。比如现在有两个文件:main.php 和tobeInclude.php,其中main.php中有这样的语句include tobeInclude.php’。假设中间码的后缀为.op(实际上不是这样)。那么加上缓存cache后 main.php=>main.op ,tobeInclude.php=>tobeInclude.op。但是PHP在执行main.php的时候,她还是需要去解析main.op中 的include命令,去调用tobeInclude.op的内容。具体流程是这样的。…=>执行main.op=>执行tobeInclude.op=>…而不是之间简单的执行main.op所以说“过多的include文件会降低程序性能的”。APC的具体配置。Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化全讯网资讯 PHP 的中间代码。APC 官方网站为 http://pecl.php.net/package/apc安装以PHP extensio选项在脚本中可以改变APC PHP.ini配置选项详解Alternative PHP Cache 用于缓存和优化PHP中间代码是否默认对所有文件启用缓冲。 若设为Off并与以加号开头的apc.filters指令一起用,则文件仅在匹配过滤器时才被缓存。apc.enable_cli = OffSYS 是否为CLI版本启用APC功能,仅用于测试和调试目的才打开此指令。apc.enabled = On 是否启用APC,如果APC被静态编译进PHP又想禁用它,这是唯一的办法。apc.file_update_protection = 2SYS 当你在一个运行中的服务器上修改文件时,你应当执行原子操作。也就是先写进一个临时文件,然后将该文件重命名(mv)到最终的名字。全讯网资讯文本编辑器以及 cp, tar 等程序却并不是这样操作的,从而导致有可能缓冲了残缺的文件。默认值 2 表示在访问文件时如果发现修改时间距离访问时间小于 2 秒则不做缓冲。那个不幸的访问者可能得到残缺的内容,但是这种坏影响却不会通过缓存扩大化。如果你能确保所有的更新操作都是原子操作,那么可以用 0 关闭此特性。如果你的系统由于大量的IO操作导致更新缓慢,你就需要增大此值一个以逗号分隔的POSIX扩展正则表达式列表。如果源文件名与任意一个模式匹配,则该文件不被缓存。注意,用来匹配的文件名是传递给include/require的文件名,而不是绝对路径。如果正则表达式的第一个字符是”+”则意味着任何匹配表达式的文件会被缓存,如果第一个字符是”-”则任何匹配项都不会被缓存。”-”是默认值,可以省略掉。apc.ttl = 0SYS缓存条目在缓冲区中允许逗留的秒数。0 表示永不超时。建议值为7200~36000。设为 0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。类似于apc.ttl,只是针对全讯网资讯每个用户而言,建议值为7200~36设为 0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。缓存条目在垃圾回收表中能够存在的秒数。此值提供了一个安全措施,即使一个服务器进程在执行缓存的源文件时崩溃,而且[url=http://seyquanxunwang.com][/url]资讯该源文件已经被修改,为旧版本分配的内存也不会被回收,直到达到此TTL值为止。设为零将禁用此特性。apc.include_once_override = OffSYS请保持为Off,否则可能导致意想不到的结果。 apc.max_file_size = 1MSYS禁止大于此尺寸的文件被缓存。apc.mmap_file_mask =SYS如果使用–enable-mmap(默认启用)为APC编译了MMAP支持,这里的值就是传递给mmap模块的全讯网资讯风格的文件掩码(建议值为”/tmp/apc.XXXXXX”)。该掩码用于决定内存映射区域是否要被file-backed或者shared memory backed。对于直接的file-backed内存映射,要设置成”/tmp/apc.XXXXXX”的样子(恰好6个X)。要使用POSIX风格的shm_open/mmap就需要设置成”/apc.shm.XXXXXX”的样子。 你还可以设为”/dev/zero”来为匿名映射的内存使用内核的”/dev/zero”接口。不定义此指令则表示强制使用匿名映射。apc.num_files_hint = 1000;SYS Web服务器上可能被包含或被请求的不同源文件的大致数量(建议值为1024~4096)。如果你不能确定,则设为 0 ;此设定主要用于拥有数千个源文件的站点。apc.optimization = 0优化级别(建议值为 0 ) 。正整数值表示启用优化器,值越高则使用越激进的优化。更高的值可能有非常有限的速度提升,但目前尚在试验中。apc.report_autofilter = Off