session优化
优化方法一:设置分级目录进行 SESSION 文件的保存
一个高访问量的网站,会生成多个session临时文件,如果这些文件只保存在一级目录里面当我们获取session值时就会导致IO性能下降,从而影响cpu等一系列问题。这时可以设置分级目录进行 SESSION 文件的保存,设置方法为:session.save_path="N;/save_path",N 为分级的级数,save_path 为开始目录。当写入 SESSION 数据的时候,PHP 会获取到客户端的 SESSION_ID,然后根据这个 SESSION ID 到指定的 SESSION 文件保存目录中找到相应的 SESSION 文件,不存在则创建之,最后将数据序列化之后写入文件。这种方法可以使文件分散保存,根据算法快速定位数据文件,大大提高了效率。
优化方法二:缓存存储法
使用缓存存储session 在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺
设置方法:
首先,安装一个memcached或者memcache(这里使用memcached);
其次,配置php.ini
session.save_handler = memcache;
session.save_path = "tcp://127.0.0.1:58002";
使用多个 memcached server 时用逗号","隔开
再次,启动memcached服务,重启apache
最后,使用下面测试用例检验是否成功
用 sessionid 去 memcached 里查询一下:
如果打印出时间戳,则反映 session 正常工作.
ps:http://blog.sina.com.cn/s/blog_6159ac4b01017ksf.html
一个高访问量的网站,会生成多个session临时文件,如果这些文件只保存在一级目录里面当我们获取session值时就会导致IO性能下降,从而影响cpu等一系列问题。这时可以设置分级目录进行 SESSION 文件的保存,设置方法为:session.save_path="N;/save_path",N 为分级的级数,save_path 为开始目录。当写入 SESSION 数据的时候,PHP 会获取到客户端的 SESSION_ID,然后根据这个 SESSION ID 到指定的 SESSION 文件保存目录中找到相应的 SESSION 文件,不存在则创建之,最后将数据序列化之后写入文件。这种方法可以使文件分散保存,根据算法快速定位数据文件,大大提高了效率。
优化方法二:缓存存储法
使用缓存存储session 在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺
设置方法:
首先,安装一个memcached或者memcache(这里使用memcached);
其次,配置php.ini
session.save_handler = memcache;
session.save_path = "tcp://127.0.0.1:58002";
使用多个 memcached server 时用逗号","隔开
再次,启动memcached服务,重启apache
最后,使用下面测试用例检验是否成功
<?php session_start(); if (!isset($_SESSION['TEST'])) { $_SESSION['TEST'] = time(); } $_SESSION['TEST3'] = time(); $session_id = session_id(); print session_id(); ?>
用 sessionid 去 memcached 里查询一下:
<?php $memcache = memcache_connect('localhost', 11211); var_dump($memcache->get($session_id)); ?>
如果打印出时间戳,则反映 session 正常工作.
ps:http://blog.sina.com.cn/s/blog_6159ac4b01017ksf.html
评论: