eaccelerator 应用之“使用共享内存存储Session”

eaccelerator的功能除了对php预编译代码进行优化、缓存之外,还提供了php开发下的共享内存操作、session内存存储、内容缓存等功能。
php默认的session存储方式是在磁盘,虽然可以配置php生成的文件目录到内存盘中,但最终还是需要依赖于文件系统,势必产生文件操纵的开销。当 网站并发请求很高的时候,还会产生另为一个性能问题:session目录下的文件数目过多,达到操纵系统瓶颈,虽然这时也可以通过配置为多级目录,但依旧 无法摆脱文件系统的魔爪。
“session.save_path = “N;/path””
eaccelerator专门针对PHP的这个Session存储效率问题,通过使用共享内存技术为我们提供了高效的解决方案。注意,要启用对 session支持,再编译安装eaccelerator时需要启用-with-eaccelerator-sessions选项,例如:
./configure –with-php-config=/usr/local/bin/php-config –enable-eaccelerator=shared –with-eaccelerator-shared-memory –with-eaccelerator-sessions
–with-eaccelerator-content-caching –with-eaccelerator-disassembler –with-eaccelerator-debug
然后我们便可以在php.ini中修改配置来启用它:
session.save_handler = eaccelerator
最后重启apache,并执行如下测试:session.php
<?php


/**
* new session hander test.
* by lowell from www.zhongguowen.com

*/


if
(

!function_exists

(

“eaccelerator_set_session_handlers”
)

)


{


die

(

“eaccelerator is in trouble!”
)

;
}

switch
(

$_GET
[

"act"
]

)


{


case
“logout”
:
session_unset

(

)

;
session_destroy

(

)

;
header

(

“Location: “
. $_SERVER
[

"PHP_SELF"
]

)

;
break
; case
“login”
:
$_SESSION
[

"user"
]

= “Lowell Zhong”
;
header

(

“Location: “
. $_SERVER
[

"PHP_SELF"
]

)

;
break
;
}


if
(

isset

(

$_SESSION
[

"user"
]

)

&& $_SESSION
[

"user"
]

!= “”
)


{


echo

“Welcome “
. $_SESSION
[

"user"
]

.
[logout
]\n

“;
}

else
{


echo

Click me
for logining”

;
}


?>

这里再推荐另外还一个php session的共享内存存储模块:http://www.ossp.org/pkg/lib/mm/

 

-------------------------------------------------------------------------

eAccelerator是一个自由开放源码php加速器,优化
和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化
作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;

 

【开始加载 eAccelerator 操作前提 - 必须且重要】

1. 安装好PHP
2. 安装好Zend
3. 选择下载对应您的系统和PHP版本的eAccelerator(这里只提供 php5.2.2 — php5.2.6的eAccelerator版本,过早的PHP版本也比较少人用了,个人觉得)
下载地址:(压缩包内有包含 php5.2.2-6 的eAccelerator版本,如PHP为5.2.5,则要选择压缩包内标识的5.2.5即可)
    http://www.zzchn.com/08/eAccelerator_for_win_php5.x.rar

4. 检验是否成功,可以建立一个文本,输入内容:

<?php
phpinfo();
?>

然后保存为 test.php ,并放入任意可访问的网站下,输入网址或IP访问。
配置成功的话,会看到如下提示:

 

5. 如果你要配置或研究,请务必仔细阅读每一个字进行安装!

 

【开始配置】

进入PHP所在 目录,打开 php.ini 输入 [zend] 搜索(一般就是在尾端)
然后就会看到
[Zend]
zend_extension_ts = "你自己的路径"
zend_extension_manager.optimizer_ts = "你自己的路径"

然后在下方增加:(重要说明:第一个值 zend_extension_ts 则是上面提到的加速器,把它放入你自己建立的目录中,在下列填入路径即可。)

zend_extension_ts="输入你自己的路径"
;eAccelerator加速器路径部分,请修改为自己的正确路径,加载方式为 zend 扩展

eaccelerator.cache_dir="输入你自己的路径"
;eAccelerator缓冲目录,记得给目录可读写权限(User权限)。

zend_optimizer.optimization_level="512"
;优化
过程,建议最高不超过1024

eaccelerator.shm_size="64"
;eAccelerator 可以使用的共享内存的数量 (以兆为单位) . “0″ 是指操作系统的默认值. 默认值是 “0″.可根据服务器的实际情况来调整,16,32,64,128都是可以的。

eaccelerator.enable="1"
;开启或关闭 eAccelerator。”1″ 为开启,”0″ 为关闭。默认值为 “1″

eaccelerator.optimizer="1"
;启或关闭内部优化
器,可以提升代码执行速度。”1″ 为开启,”0″ 为关闭。默认值为 “1″

eaccelerator.check_mtime="1"
;打开或者关闭 PHP 的文件修改检查. “1″ 是指打开, “0″ 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 “1″. 默认值是 “1″.

eaccelerator.debug="0"
;开启或关闭调试日志记录。”1″ 为开启,”0″ 为关闭。默认值为 “0″。

eaccelerator.filter=""
;判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型(如 “*.php *.phtml”等)
如果参数以 “!” 开头,则匹配这些参数的文件被忽略缓存。默认值为 “”,即,所有 PHP 文件
都将被缓存。

eaccelerator.shm_max="0"
;当使用 ” eaccelerator_put() ” 函数时禁止其向共享内存中存储过大的文件。该参数指定允许
存储的最大值,单位:字节 (10240, 10K, 1M)。”0″ 为不限制。默认值为 “0″。

eaccelerator.shm_ttl="0"
;当 eAccelerator 获取新脚本的共享内存大小失败时,它将从共享内存中删除所有在
最后 “shm_ttl” 秒内无法存取的脚本缓存。默认值为 “0″,即:不从共享内春中删除
任何缓存文件。

eaccelerator.shm_prune_period="0"
;当 eAccelerator 获取新脚本的共享内存大小失败时,他将试图从共享内存中删除早于
“shm_prune_period” 秒的缓存脚本。默认值为 “0″,即:不从共享内春中删除
任何缓存文件。

eaccelerator.shm_only="0"
;允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认
值为 “0″,即:使用磁盘和共享内存进行缓存。

eaccelerator.compress="1"
;允许或禁止压缩内容缓存。默认值为 “1″,即:允许压缩。

eaccelerator.compress_level="9"
;指定内容缓存的压缩等级。默认值为 “9″,为最高等级。

;以下禁止的功能,避免冲突。
;zend_optimizer.enable_loader = 1
;开启Zend Loader以解析Zend混淆器加密过的PHP代码。默认开启,此行配置只是起到说明作用。
;zend_optimizer.optimization_level=15
;zend_optimizer.license_path =

最后,一定要重启IIS,即可通过文章开头检查了是否加载了。
网上翻阅了许多资料,许多都不详细,特此整理了一下。

有问题可回复:)

此条目发表在article分类目录,贴了标签。将固定链接加入收藏夹。