您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
DiscuzNt3.0开启Memcached以及二次开发监控Memcached状态
州龙2025-07-17Discuz教程已有人查阅
导读discuz 推出了3.0版本的discuz nt,虽然与之前的提供SNS社区的目标相比缩水了不少,但是还是令人期待的,官方的说法是修改了大量的bug,先发布一个稳定的版本
discuz 推出了3.0版本的discuz nt,虽然与之前的提供SNS社区的目标相比缩水了不少,但是还是令人期待的,官方的说法是修改了大量的bug,先发布一个稳定的版本,为后面的其它发展打下基础。
Discuz NT已经集成了Memcached来做缓存,代震军 在他的博客里面对原理和思路也做了很多的阐述:
Discuz!NT 缓存设计简析 [原创]
Discuz!NT中集成Memcached分布式缓存
一、安装Memcached及Memcached配置和状态查询
要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:
1. 下载Memcached:http://code.jellycan.com/memcached/ 现在的较新版本是1.2.6.注意下载正确的版本,windows 服务的话下载win32 binary。
2.解压之后放在硬盘的目录下,如:D:\memcached. 然后在运行中输入cmd进入命令行,进入到Memcached.exe 所在的目录,例如:D:\memcached,然后输入:Memcached -d install,即可完成安装。
Memcached还有其他的一些常用的命令如下:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 较大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 较大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 小分配空间,key+value+flags默认是48
-h 显示帮助
按照上面的安装步骤安装之后,使用memcached -m 200来调整较大内存占用之后会发现没有起作用,总是默认的64MB的内存,在网上搜了一下,原因是注册表中并没有写入信息,可以这样来修改。
1. memcached -d shutdown 首先关闭memcached服务。
2.进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server, 在其中有一个ImagePath项,值为"d:\memcached\memcached.exe" -d runservice,在后面加上-l 127.0.0.1 -m 3000 -c 2048。
3.memcached -d start 启动memcached服务,这样就将memcached的较大内存修改为了3000MB。
对Memcached缓存服务的状态查询,可以先telnet连接上服务:telnet 127.0.0.1 11211 ,然后使用 stats命令查看缓存服务的状态,会返回如下的数据:
time: 1255537291 服务器当前的unix时间戳
total_items: 54 从服务器启动以后存储的items总数量
connection_structures: 19 服务器分配的连接构造数
version: 1.2.6 memcache版本
limit_maxbytes: 67108864 分配给memcache的内存大小(字节)
cmd_get: 1645 get命令(获取)总请求次数
evictions: 0 为获取空闲内存而删除的items数(分配给memcache的空间用满后需
要删除旧的items来得到空间分配给新的items)
total_connections: 19 从服务器启动以后曾经打开过的连接数
bytes: 248723 当前服务器存储items占用的字节数
threads: 1 当前线程数
get_misses: 82 总未命中次数
pointer_size: 32 当前操作系统的指针大小(32位系统一般是32bit)
bytes_read: 490982 总读取字节数(请求字节数)
uptime: 161 服务器已经运行的秒数
curr_connections: 18 当前打开着的连接数
pid: 2816 memcache服务器的进程ID
bytes_written: 16517259 总发送字节数(结果字节数)
get_hits: 1563 总命中次数
cmd_set: 54 set命令(保存)总请求次数
curr_items: 28 服务器当前存储的items数量
二、在Discuz NT 3.0中配置Memcached服务
在Discuz NT 3.0中配置Memcached服务较为简单,找到论坛根目录下的config目录,找到Memcached.config,打开,进行如下配置:
(2)处填写Memcached服务器的IP地址+端口,例如:127.0.0.1:11211
三、二次开发监控Memcached状态
Discuz NT的一个好处就是开源的,并且我们能够再上面很灵活的进行二次开发,这里,我们就以监控Memcached状态为例来做一个二次开发。具体的步骤是:
1.下载Memcached的.Net的开发包,下载地址是:http://sourceforge.net/projects/memcacheddotnet/。
2.在visual studio 2005或者2008中建立一个类库,例如命名为:MyBBS.BBS.Plugin.MemcachedStats,然后在项目点击右键,选择属性,将默认命名空间修改为:Discuz.Web,
3.将Memcached的.Net开发包解压,将将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll 等放到bin目录,并且在项目中引用Memcached.ClientLibrary.dll.
4.在项目中引用Discuz.Forum.
5.在项目中增加类,命名为memcachedstats.cs.记得较好是小写,继承自Discuz.Forum.PageBase。然后在类中override showpage()函数,我们就可以在这里来写代码了,如下:
6.在论坛根目录下面的templete\default\中新建memcachedstats.htm,写入下面的代码:
7.进入论坛后台管理系统,点击“界面风格”--“模板管理”--“default”,这时我们就可以看到出现了memcachedstats这个模板了,勾中前面的复选框,然后选择“按选择的模板文件生成页面”。
8.上面的工作完成之后,我们在浏览器中输入:您的论坛地址\memcachedstats.aspx,就可以看到统计的Memcached服务的信息了,
四、结束语与参考信息
怎么样,还是很简单的吧,当然这里仅仅是做了最基本的开发了,不过相信这些弄清楚了,其它的开发就不是很复杂了,大家也都可以开发出自己更多丰富多彩的功能了。
Discuz NT已经集成了Memcached来做缓存,代震军 在他的博客里面对原理和思路也做了很多的阐述:
Discuz!NT 缓存设计简析 [原创]
Discuz!NT中集成Memcached分布式缓存
一、安装Memcached及Memcached配置和状态查询
要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:
1. 下载Memcached:http://code.jellycan.com/memcached/ 现在的较新版本是1.2.6.注意下载正确的版本,windows 服务的话下载win32 binary。
2.解压之后放在硬盘的目录下,如:D:\memcached. 然后在运行中输入cmd进入命令行,进入到Memcached.exe 所在的目录,例如:D:\memcached,然后输入:Memcached -d install,即可完成安装。
Memcached还有其他的一些常用的命令如下:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 较大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 较大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 小分配空间,key+value+flags默认是48
-h 显示帮助
按照上面的安装步骤安装之后,使用memcached -m 200来调整较大内存占用之后会发现没有起作用,总是默认的64MB的内存,在网上搜了一下,原因是注册表中并没有写入信息,可以这样来修改。
1. memcached -d shutdown 首先关闭memcached服务。
2.进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server, 在其中有一个ImagePath项,值为"d:\memcached\memcached.exe" -d runservice,在后面加上-l 127.0.0.1 -m 3000 -c 2048。
3.memcached -d start 启动memcached服务,这样就将memcached的较大内存修改为了3000MB。
对Memcached缓存服务的状态查询,可以先telnet连接上服务:telnet 127.0.0.1 11211 ,然后使用 stats命令查看缓存服务的状态,会返回如下的数据:
time: 1255537291 服务器当前的unix时间戳
total_items: 54 从服务器启动以后存储的items总数量
connection_structures: 19 服务器分配的连接构造数
version: 1.2.6 memcache版本
limit_maxbytes: 67108864 分配给memcache的内存大小(字节)
cmd_get: 1645 get命令(获取)总请求次数
evictions: 0 为获取空闲内存而删除的items数(分配给memcache的空间用满后需
要删除旧的items来得到空间分配给新的items)
total_connections: 19 从服务器启动以后曾经打开过的连接数
bytes: 248723 当前服务器存储items占用的字节数
threads: 1 当前线程数
get_misses: 82 总未命中次数
pointer_size: 32 当前操作系统的指针大小(32位系统一般是32bit)
bytes_read: 490982 总读取字节数(请求字节数)
uptime: 161 服务器已经运行的秒数
curr_connections: 18 当前打开着的连接数
pid: 2816 memcache服务器的进程ID
bytes_written: 16517259 总发送字节数(结果字节数)
get_hits: 1563 总命中次数
cmd_set: 54 set命令(保存)总请求次数
curr_items: 28 服务器当前存储的items数量
二、在Discuz NT 3.0中配置Memcached服务
在Discuz NT 3.0中配置Memcached服务较为简单,找到论坛根目录下的config目录,找到Memcached.config,打开,进行如下配置:
<?xml version="1.0"?>
<MemCachedConfigInfo xmlns:xsi="http:// .w3.org/2001/XMLSchema-instance%22 xmlns:xsd="http:// .w3.org/2001/XMLSchema%22>
<ApplyMemCached>(1)</ApplyMemCached>
<ServerList>(2)</ServerList>
<PoolName>DiscuzNT_MemCache</PoolName>
<IntConnections>3</IntConnections>
<MinConnections>3</MinConnections>
<MaxConnections>5</MaxConnections>
<SocketConnectTimeout>1000</SocketConnectTimeout>
<SocketTimeout>3000</SocketTimeout>
<MaintenanceSleep>30</MaintenanceSleep>
<FailOver>true</FailOver>
<Nagle>true</Nagle>
</MemCachedConfigInfo>
(1)处为"true”的时候表示Discuz NT打开Memcached缓存功能,为"false”的时候表示关闭Memcached缓存功能。(2)处填写Memcached服务器的IP地址+端口,例如:127.0.0.1:11211
三、二次开发监控Memcached状态
Discuz NT的一个好处就是开源的,并且我们能够再上面很灵活的进行二次开发,这里,我们就以监控Memcached状态为例来做一个二次开发。具体的步骤是:
1.下载Memcached的.Net的开发包,下载地址是:http://sourceforge.net/projects/memcacheddotnet/。
2.在visual studio 2005或者2008中建立一个类库,例如命名为:MyBBS.BBS.Plugin.MemcachedStats,然后在项目点击右键,选择属性,将默认命名空间修改为:Discuz.Web,
3.将Memcached的.Net开发包解压,将将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll 等放到bin目录,并且在项目中引用Memcached.ClientLibrary.dll.
4.在项目中引用Discuz.Forum.
5.在项目中增加类,命名为memcachedstats.cs.记得较好是小写,继承自Discuz.Forum.PageBase。然后在类中override showpage()函数,我们就可以在这里来写代码了,如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Collections;
using M=Memcached.ClientLibrary;
namespace Discuz.Web
{
public class memcachedstats:Discuz.Forum.PageBase
{
public string MemcachedStatsOutput = string.Empty;
protected override void ShowPage()
{
base.ShowPage();
string[] servers = { "此处填写Memcachedf服务IP+端口" };
M.SockIOPool pool = M.SockIOPool.GetInstance();
pool.SetServers(servers);
pool.InitConnections = 3;
pool.MinConnections = 3;
pool.MaxConnections = 5;
pool.SocketConnectTimeout = 1000;
pool.SocketTimeout = 3000;
pool.MaintenanceSleep = 30;
pool.Failover = true;
pool.Nagle = false;
pool.Initialize();
this.pagetitle = "MemcachedStats";
M.MemcachedClient mc = new Memcached.ClientLibrary.MemcachedClient();
StringBuilder sb = new StringBuilder();
Hashtable ht = mc.Stats();
sb.AppendLine("Memcached Stats:<br>");
sb.AppendLine("_______________________________________<br>");
foreach (DictionaryEntry de in ht)
{
Hashtable info = (Hashtable)de.Value;
foreach (DictionaryEntry de2 in info)
{
sb.AppendLine(de2.Key.ToString() + ": " + de2.Value.ToString() + "<br>");
}
}
MemcachedStatsOutput = sb.ToString();
}
}
}
这样我们就将代码完成了,我们将Memcached服务的状态信息保存到了MemcachedStatsOutput 这个字段中了,那么我们怎么在页面上显示出来呢?在进行下一步之前,编译输出MyBBS.BBS.Plugin.MemcachedStats.dll然后上传到论坛根目录的bin目录下。6.在论坛根目录下面的templete\default\中新建memcachedstats.htm,写入下面的代码:
<%template _header%>
<div id="nav">
<div class="wrap s_clear">
<a href="{config.forumurl}" class="title">{config.forumtitle}</a> ? <strong>Memcached Stats</strong>
</div>
</div>
<div class="wrap with_side s_clear help" id="wrap">
<div class="side">
<div class="sideinner">
</div>
</div>
<div class="cpmain">
<div class="cpcontent">
<h3 class="lightlink">Memcached Stats</h3>
<hr class="solidline"/>
{MemcachedStatsOutput}
</div>
</div>
</div>
<%template _copyright%>
<%template _footer%>
这里我们重点注意红色的部分,我们就是在这里来把我们上面的类库里面的MemcachedStatsOutput字段在这里输出的。7.进入论坛后台管理系统,点击“界面风格”--“模板管理”--“default”,这时我们就可以看到出现了memcachedstats这个模板了,勾中前面的复选框,然后选择“按选择的模板文件生成页面”。
8.上面的工作完成之后,我们在浏览器中输入:您的论坛地址\memcachedstats.aspx,就可以看到统计的Memcached服务的信息了,
四、结束语与参考信息
怎么样,还是很简单的吧,当然这里仅仅是做了最基本的开发了,不过相信这些弄清楚了,其它的开发就不是很复杂了,大家也都可以开发出自己更多丰富多彩的功能了。
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz二次开发文件目录结构说明
一) Discuz!的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。a) Admin:后台管理功能模块b) Api:DZ系统与其它系统之间接口程序
discuz论坛安装的步骤方法教程
前期环境都做好了,就不演示如何装了。安装这个两个包这里用的是3.3下载地址:因为后缀是zip的需要用unzip解压缩:没unzip这个命令的话安装解开之后会得到三个目录
LAMP+discuz安装论坛的方法
LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境LAMP是一个缩写词,具体包括Linux操作系统
discuz的sphinx全文检索搜索引擎方案
sphinx最主要的就是这个配置文件,当然在增量索引部分可以写一个脚本放到crontab里面来定时跑下面介绍下在discuz中sphinx的php调用部分,sphinx的接口采用PHP的扩展
相关源码
-
(自适应)pbootcms家政服务保洁保姆打扫卫生网站模板下载本模板基于PbootCMS内核开发,为家政服务企业量身定制。设计风格温馨亲切,突出家政行业的专业与贴心服务特性,多方位展示企业服务项目与优势。查看源码 -
帝国cms7.5文库范文/付费下载/复制付费/带支付源码免费下载本模板为文库、文档分享、知识付费类平台设计,提供完整的内容变现解决方案。系统支持多种内容展示与付费模式,满足不同场景下的内容价值转化需求,帮助平台实现内容资源的有效管理和商业化运营。查看源码 -
(自适应)html5导航目录索引工具类网站源码下载本模板基于PbootCMS开发,为站长导航、网址导航类网站设计。采用HTML5+CSS3技术构建,适配PC端和移动端,提供流畅的浏览体验。适用于个人站长、资源导航平台等场景查看源码 -
(响应式)企业管理人力资源服务类pbootcms模板源码下载为人力资源服务及企业管理设计的响应式网站模板,基于PbootCMS内核开发。通过宽屏布局优化岗位展示效果,简洁界面聚焦人才服务核心业务,自适应技术确保在PC端与手机端查看源码 -
帝国cms7.5品牌连锁店招商加盟商机网站模版源码本模板为招商加盟、创业投资、品牌连锁等商业领域设计,采用帝国CMS7.5内核构建,整体风格简洁大气,突出商业信任感与专业度,适合各类招商加盟项目展示、品牌连锁店宣传等商业应用场景。查看源码 -
(自适应)工商代理公司注册财务会计pbootcms模板免费下载为工商代理、财务会计服务企业设计的网站模板,基于PbootCMS开发,充分考虑了企业服务行业的展示需求与客户转化路径。设计风格专业严谨,布局清晰合理,呈现企业服务内容与专业优势。查看源码
| 分享笔记 (共有 篇笔记) |
