Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DISCUZ X2.5/X3/X3.1 SESSION机制优化扩展 1.0.1beta版

[复制链接]
Luca. 发表于 2013-9-24 15:47:11 | 显示全部楼层 |阅读模式
大型站点在现有的session机制下很多会出现session的表锁问题,由于对session的操作在updatesession方法中,无论游客或是会员访问每个页面的时候都会有读写操作,在3.0版本中后台提供了关闭session的方法,但是用户在线时间的统计也随之停止了。为了解决这个问题,我们开发了此扩展,把session表实现到redis中,用来避免各类性能问题。

基本原理:
在redis中实现session表类的全部接口,并把统计数据等操作通过驻守进程来完成。

适应场景:
网站浏览量巨大,session表频繁出现锁表问题。

服务器要求:
1,独立服务器。
2,安装了redis和phpredis。

操作步骤:
1,安装对应版本框架,https://discuz.dismall.com/thread-3334048-1-1.html
2,安装redis,phpredis,然后修改配置文件中的redis部分,使之填写正确。关于redis和phpredis的安装可以参照该贴:https://discuz.dismall.com/thread-3369042-1-1.html
3,上传session的包,切换到bin目录,执行nohup php bin_session_cron.php &
4,去redis客户端用这个hgetall sR:status,只要数据不都为0说明已经生效了


注意事项:
1,论坛默认的内存方案优先级,mc>redis>其他,对于大数据集mc性能高于redis所以我们建议mc和redis共存,如果之前使用mc,在安装redis后在config中配置后即可,而如果使用了其他内存方案,在启用redis后会自动关闭其他内存方案,所以我们建议再安装mc并配置好。
2,其中的bin_session_cron作为驻守进程在后台运行不能间断,所以我们建议大家参考帖子:https://discuz.dismall.com/thread-3334048-1-1.html最后方的开机启动配置方案进行配置。


附件:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
jackton 发表于 2013-9-24 17:24:16 | 显示全部楼层
本帖最后由 jackton 于 2013-9-24 17:26 编辑

太给力了了!测试下 PS: X3.1 是不是不兼容扩展框架啊。 我覆盖class_core.php文件后就报错啊
回复

使用道具 举报

 楼主| Luca. 发表于 2013-9-24 23:40:01 | 显示全部楼层
jackton 发表于 2013-9-24 17:24
太给力了了!测试下 PS: X3.1 是不是不兼容扩展框架啊。 我覆盖class_core.php文件后就报错啊

有这事?报什么错?
回复

使用道具 举报

jackton 发表于 2013-9-25 10:16:09 | 显示全部楼层
Luca. 发表于 2013-9-24 23:40
有这事?报什么错?
  1. Discuz! System Error

  2. Cloud file not exists!
  3. PHP Debug

  4. No.        File        Line        Code
  5. 1        index.php        126        require(%s)
  6. 2        forum.php        65        runhooks()
  7. 3        source/function/function_core.php        1114        hookscript(%s, %s, %s, Array, %s)
  8. 4        source/function/function_core.php        1158        plugin_cloudsearch->plugin_cloudsearch()
  9. 5        source/plugin/cloudsearch/search.class.php        29        Cloud_ext::loadClass(%s)
  10. 6        data/sysdata/cloud_ext20130711~1454~21.php        27        Cloud_ext::loadFile(%s)
  11. 7        data/sysdata/cloud_ext20130711~1454~21.php        52        include(%s)
  12. 8        source/plugin/manyou/Service/App.php        14        Cloud::loadFile(%s)
  13. 9        data/sysdata/cloud_ext20130711~1454~21.php        111        break()
复制代码
回复

使用道具 举报

 楼主| Luca. 发表于 2013-9-25 10:31:33 | 显示全部楼层

了解了,请查看https://discuz.dismall.com/thread-3334048-1-1.html
这儿写了升级3.1的处理方案,请删掉对应文件并更新最新包。
回复

使用道具 举报

 楼主| Luca. 发表于 2013-9-25 10:38:22 | 显示全部楼层

了解了,请访问https://discuz.dismall.com/thread-3334048-1-1.html
里面写了升级提示,需要安装最新包,并删掉一个文件
回复

使用道具 举报

paull 发表于 2013-10-28 17:02:54 | 显示全部楼层
memcached用户无缘了?
回复

使用道具 举报

haigou20 发表于 2013-11-16 10:15:13 | 显示全部楼层
paull 发表于 2013-10-28 17:02
memcached用户无缘了?

哥,弄个出来吧
回复

使用道具 举报

ibmitzhp 发表于 2014-1-18 15:32:50 | 显示全部楼层
太给力了了!测试下
回复

使用道具 举报

godamen 发表于 2014-3-10 16:24:26 | 显示全部楼层
有谁遇到过redis clients最大只能到512吗?conf中为10000.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 01:49 , Processed in 0.028591 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表