最近蚊子跟进的几个项目都用到了eAccelerator,因为赶进度,也没仔细看过eAccelerator的详细配置,只是照着网上的拷贝粘贴了一把,今天有时间,仔细看了看,现在整理如下
根据自己的php的安装方式及服务器环境,可以使用下面的一种(仅仅一种)方式加载eAccelerator,路径请根据自己实际情况更改,这里暂不探究到底使用那种方式加载好。
123456 extension="eaccelerator.so"zend_extension="/usr/lib/php4/eaccelerator.so"zend_extension_ts="/usr/lib/php4/eaccelerator.so"extension="eaccelerator.dll"zend_extension_ts="c:\php4\eaccelerator.dll"zend_extension="c:\php4\eaccelerator.dll"
1 |
eAccelerator的配置如下 |
12345678910111213 eaccelerator.shm_size="16"eaccelerator.cache_dir="/tmp/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="0"eaccelerator.shm_prune_period="0"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9"
1 |
下面就来分析以上参数的含义: |
1 |
eaccelerator.shm_size<br />用来设置分配给eAccelerator用来缓存php的最大共享内存,单位是mb,如果设置为0,就使用默认大小。<br />在linux系统中一个process能分配的最大内存是由/proc/sys/kernel/shmmax限制的,所以如果eA设置的内存超出了这个值,eA在初始化的时候会失败。shmmax的单位是字节(bytes)。 |
1 |
eaccelerator.cache_dir<br />用来设置硬盘缓存目录。eA用来存放预编译代码,session数据,内容和用户入口。默认值是"/tmp/eaccelerator"。 |
1 |
eaccelerator.enable<br />用来设置是否启用或禁用eAccelerator,设置1为启用,设置0为禁用。 |
1 |
eaccelerator.optimizer<br />开启或关闭优化,用户加速代码的执行。1为开启,0为关闭,优化仅仅在脚本被编译时候发生并且是在被缓存之前。 |
1 |
eaccelerator.check_mtime<br />在每次命中的时候Eaccelerator都会检查脚本的修改时间来判断是不是脚本发生的变化来决定是否需要重新编译。尽管检查比打开文件并编译要快,但仍然会带来一些开销的,因为每次都会有状态调用要完成。这个配置可以关闭这个检查。不过关闭检查带来的不利就是每次更新了文件需要认为手动的清除cache。<br />默认检查是启用的,1是启用,0是禁用。 |
1 |
eaccelerator.debug<br />开启关闭debug日志。如果设置为1,将打印很多文件命中的信息到日志中。这个在排查eAccelerator的时候很有用。 |
1 |
eaccelerator.filter<br />用来决定哪个php文件被缓存。可以通过使用通配符(比如"*.php *.phtml")来匹配需要缓存的php脚本。如果以"!"开头,表示不匹配,这个参数默认是空,可以缓存所有编译好的php脚本<br />需要注意的是eaccelerator.filter并不是基于URL工作的,而是基于文件的绝对路径,比如定义了"!/home"的话,那所有/home目录的脚本都不会被缓存。如果要定义多个匹配,使用空格或者制表符分开,而不是逗号。 |
1 |
eaccelerator.shm_max<br />设置内存缓存可以缓存文件的最大值。 |
1 |
eaccelerator.shm_ttl<br />当eAcelerator没有空余的共享内存的时候,就会把最少shm_ttl设置的秒数没访问过的脚本从缓存中释放掉,默认值是0,表示eA不会释放任何缓存。 |
1 |
eaccelerator.shm_prune_period<br />当没有足够的内存用来缓存的时候,eA会在上次清除缓存的时间超过了shm_prune_period设定的秒数时再次尝试清除过期的脚本。<br />默认值为0,eA将不从缓存中清除过期的脚本。 |
1 |
eaccelerator.shm_only<br />启用或者禁用磁盘缓存。这个选项对session数据和内容的缓存没效果。默认值是0,允许eA使用磁盘和内存进行缓存。 |
1 |
eaccelerator.compress<br />当使用eaccelerator_content_* 的api时,eA可以在缓存前对内容进行压缩。默认值为1表示启用,禁用为0。 |
1 |
eaccelerator.compress_level<br />内容缓存的压缩等级。默认值为9,是最大压缩级别。 |
1 |
eaccelerator.log_file<br />设置eaccelerator日志的存放目录。如果这选项没有配置,则数据都被记录到stderr,如果使用php的是apache,则数据都被记录到apache的error log中。 |
1 |
eaccelerator.keys | session | content<br />这些设置控制着eA缓存用户内容的存放地点。可用的值有<br />shm_and_disk 使用内存和磁盘进行缓存(默认值)<br />shm 在内存中缓存数据,当内存满了或者数据大小超过了eaccelerator.shm_max设置的值就缓存到磁盘上<br />shm_only 只使用内存缓存数据<br />disk_only 只使用磁盘缓存数据<br />none 不缓存数据 |
本篇文章不涉及任何优化。原文参考:http://eaccelerator.net/wiki/Settings