燕之庐网站建设 - 优质网站设计公司

Posts Tagged ‘discuz’

php

2009/12/01

Discuz!二次开发必备知识——DZ程序文件目录含义

Tags: , ,

DZ程序文件目录含义
基于7.0的标准程序,部分与插件无关的文件不作说明
文件颜色说明:
红色:程序核心文件,修改这类文件时千万要注意安全!
橙色:做插件几乎不会用到的文件,大概了解功能就可以了,其实我也不推荐修改这些文件
绿色:函数类文件,许多功能强大的自定义函数可以调用这类文件来使用
蓝色:最标准的插件制作常用文件紫色:该文件被Zend加密,请不要修改这类文件
每个目录里面都有一个空的index.htm,这是为了防止列目录用的,不必理会.
根目录 ./ (这里都是最基本的程序)
admincp.php——后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处理管理控制。
ajax.php——论坛模板ajax判断及数据返回都在这里进行
attachment.php——附件文件,仅仅处理附件下载的功能。
announcement.php——
论坛公告的显示,一般很少改
config.inc.php——配置论坛数据库、密码等信息,这个大家最熟悉了
discuz_version.php——论坛版本信息,用来更新用的,没有官方说明绝对不要修改
eccredit.php——论坛商品功能以及信用度查看的处理文件
faq.php——论坛自带的帮助
favicon.ico——显示在IE标题栏的的图标
forumdisplay.php——很简单,论坛主题列表的显示
index.php——
控制首页元素显示
invite.php——论坛邀请注册程序文件
leftmenu.php——首页侧栏文件
logging.php——
登陆系统,判断用户名、密码。
magic.php——论坛道具程序文件,处理道具购买、赠送等操作
medal.php——论坛勋章中心程序文件,处理勋章发送等功能
member.php——
控制会员列表显示,积分策略等等信息显示
memcp.php——
会员个人中心显示
misc.php——
控制评分功能、论坛界面显示功能等等
modcp.php——这个是论坛前台的版主操作的迷你后台程序
my.php——查看一切和自己在这个论坛的行为,例如我的帖子用户组权限等等
plugin.php——论坛插件,这个主要控制论坛插件的菜单的显示,一般极少修改
pm.php——论坛短信息程序,控制短信息发表与浏览
post.php——
viewthread.php相似,但是更多是管理帖子发表、编辑等等信息,也会有权限的控制提示
redirect.php——
控制显示论坛的最后发表的主题访问,也控制主题的转向功能
register.php——
注册文件,同时也会控制注册的信息的合法性
relatekw.php——论坛相关标签生成
relatethread.php——论坛相关主题
robots.txt——设置里面的地址可以阻止搜索机器人访问对应的页面
rss.php——RSS
快速订阅,不用多说了吧?
search.php——处理论坛搜索功能中的信息筛选
seccode.php——论坛注册,生成验证码的程序
sitemap.php——论坛SiteMAP功能程序
space.php——个人资料查看的程序
stats.php——
处理统计中的统计信息,也允许查看论坛对应的统计数据
tag.php——论坛标签整理页
task.php——论坛任务程序,任务主程序触发,判断均在此进行
topic.php——
一般无法直接访问,控制页面显示,显示主题条数
topicadmin.php——
控制的是管理人员的前台管理操作,如精华、置顶、高亮等等
trade.php——处理论坛的交易主题
video.php——处理论坛的视频主题,包括显示和调用。
viewthread.php——
处理浏览帖子时候的帖子信息显示,例如信息、标题等等,同时也处理访问帖子的权限,如阅读权限是否足够等等。

./admin (管理后台的程序文件,全部在这里,仅能通过admincp.php来访问,下面的解释说明这个文件对应着后台对应的设置项目
admingroups.inc.php——
管理组

adv.inc.php——论坛广告
announce.inc.php——论坛公告
attach.inc.php——论坛附件
checktools.inc.php——文件检查,邮件设置,FTP权限检查,附件水印设置
counter.inc.php——更新论坛统计
cpanel.share.php——检查后台访问进程的文件,也有一些管理文件删除的函数
creditwizard.inc.php——积分设置向导
db.inc.php——数据库备份,导入,导出,优化,检验
discuzdb.md5——数据库检验文件
discuzfiles.md5——程序文件检验文件
ec.inc.php——支付宝及其它电子商务
faq.inc.php——论坛帮助
forums.inc.php——版区下面的所有设置
global.func.php——后台函数库,像showsettings等后台设置显示函数都在这里可以找到
home.inc.php——后台首页内容
insenz.func.php——INSENZ营销函数库
insenz.inc.php——INSENZ营销
jswizard.inc.php——JS调用向导
login.inc.php——后台登陆提示页面
logs.inc.php——论坛所有的运行记录
magics.inc.php——论坛道具
main.inc.php——论坛后台的风格控制程序
medals.inc.php——勋章中心
members.inc.php——用户分类下面的所有设置
menu.inc.php——系统设置的菜单栏
misc.inc.php——在线列表定制,友情连接,Discuz!代码设置,词语过滤,主题图标,附件类型,计划任务,标签,边栏
moderate.inc.php——主题,回复,用户审核
plugins.inc.php——论坛插件
profilefields.inc.php——用户信息编辑
project.inc.php——论坛方案
prune.inc.php——批量删帖
qihoo.inc.php——QIHOO搜索
quickqueries.inc.php——常用SQL命令文件,可以在这里添加常用的SQL语句来快速执行
ranks.inc.php——信用等级
recyclebin.inc.php——回收站
runwizard.inc.php——运行设置向导
search.inc.php——后台自带的设置搜索功能
settings.inc.php——全局下面的大部分设置项目
smilies.inc.php——表情
styles.inc.php——论坛风格
tasks.inc.php——论坛任务
templates.inc.php——论坛模板设置
threads.inc.php——主题设置
threadtypes.inc.php——主题分类
tools.inc.php——论坛工具
tradelog.inc.php——交易记录查看
usergroups.inc.php——用户设置,发帖数级别
video.inc.php——视频设置
zip.func.php——数据压缩及解压程序

./Api (主要是和通行证及数据调用有关的内容)
advcache.php——论坛广告显示管理
dbbak.php——数据库操作函数
google.php——GOOGLE搜索
insenz.php——论坛营销
javascript.php——JS调用
uc.php——Ucentre通讯
uchome.php——UHome通讯
video.php——视频调用函数
/trade
alipay.api.php——支付宝接口
credit.notify.php——积分充值信息
trade.notify.php——交易信息

./archiver==
(特别说明下,因为archiver中的目录的文件没有调用commom.inc.php,所以所有变量、函数都不能直接使用,必须要搜索数据库来进行判断)
index.php archiver首页
/include
thread.inc.php archiver主题显示
index.inc.php
这个是过滤论坛权限和界面显示用的
forum.inc.php archiver
论坛显示

./attachments是论坛附件的存放目录
./forumdata是论坛记录和缓存文件的存放目录,一般这些文件都是自动生成的,所以不要修改。至于有什么用途也说下吧。
/cache(很好用的功能,调用的这里的文件变量是非常快的)
admingroup_X.php 管理组权限
cache_archiver.php archiver存档
cache_bbcodes.php BBCODE
SMILES
cache_blog.php
所有用户组的权限变量和smiliesbbcode,还有发帖数等级的信息

cache_censor.php
屏蔽信息
cache_crons.php
计划任务
cache_faqs.php FAQ
cache_forumdisplay.php
论坛信息与公告
cache_forums.php
同上
cache_icons.php 论坛图标
cache_index.php
在线列表、联盟论坛、公告
cache_ipbanned.php
IP段记录
cache_magics.php 论坛道具属性
cache_medals.php
勋章信息
cache_post.php smilies
bbcodeicons
cache_profilefields.php
用户栏目定制

cache_ranks.php 信用等级
cache_register.php 注册
cache_request.php 论坛任务信息
cache_secqaa.php 验证提问
cache_smilies.php 论坛表情
cache_settings.php setting
表设置的参数变量
cache_topicadmin.php 主题管理
cache_usergroups.php 用户组基本信息
cache_viewpro.php 用户资料
cache_viewthread.php
论坛,用户组,smiliesbbcodeicons
plugin_XX.php
插件表

style_XX.php
风格缓存
usergroup_XX.php
用户组缓存
requestxxxxxx.php 这个是记录论坛任务的缓存文件
/templates(基于HTML所生成的模板PHP,比较少做插件会用到,忽略)
/threadcaches (主题缓存存放目录)
根部的一些文件就是数据记录文件了。

./images是图片目录,直接跳过,需要说明的是 ./images/admincp/admincp.css可以用来定义系统设置的界面

./include是论坛核心程序目录,非常有必要去了解。
serverbusy.htm 系统错误信息(服务器忙碌就显示这个页面)
xmlparser.class.php 主要是标签处理
viewthread_video.inc.php 视频主题行为处理
viewthread_trade.inc.php 商品主题行为处理
viewthread_reward.inc.php 悬赏主题行为处理
viewthread_poll.inc.php 投票主题行为处理
viewthread_debate.inc.php 辩论主题行为处理
viewthread_activity.inc.php 活动主题行为处理
trade.func.php 交易行为函数库
threadpay.inc.php 出售帖
template.func.php
控制模板缓存生成的文件
task.func.php 论坛任务常用函数库
swfupload.func.php 批量上传管理
sendmail.inc.php 发送EMAIL的程序
security.inc.php
好像是代理一类的,不管
seccode.class.php 验证码处理库
search_qihoo.inc.php qihoo搜索
search_sort.inc.php 搜索排序
search_trade.inc.php 搜索特殊主题
request.func.php request里面的文件有关,这是个函数文件
relatethreads.inc.php 应该说是生成相关主题的程序
promotion.inc.php
记录当前用户的IP等信息
printable.inc.php
打印主题用的程序
post.func.php 不错的函数文件,主要是记录信息、更新帖子的函数
pmprompt.inc.php 短信息内容处理
newthread.inc.php
发新话题的信息处理
newreply.inc.php
发回复的信息处理
moderation.inc.php
版主管理
misc.func.php 又是函数文件,控制管理PM,评分PM,评分记录,附件高亮显示,IP转换为地理位置
membermerge.func.php
合并用户时的函数处理文件
magic.func.php 道具处理函数库
insenz.func.php 论坛营销管理函数库
image.class.php 图片显示处理
global.func.php 丰富的函数库,都是前台用的,如除去HTML、发PM、发EMAIL等等,建议大家研究下。
gifmerge.class.php 图片显示处理
ftp.func.php 远程FTP附件处理函数文件
forumselect.inc.php 论坛列表显示
forum.func.php 处理论坛信息用的函数,如论坛菜单下拉等等
editpost.inc.php 编辑帖子的信息处理
editor.func.php 编辑器管理的函数库
ec_credit.func.php 积分交易文件
discuzcode.func.php Discuz!
代码转换处理程序
diff.class.php 数据库处理
db_mysql_error.inc.php 数据库错误汇报
db_mysql.class.php
数据库中心操作程序
cron.func.php 控制计划任务执行的程序
counter.inc.php 记录操作系统与浏览器的统计
common.inc.php 最重要的核心程序,读取COOKIES信息,定义全局系统函数变量
chinese.class.php 处理乱码和字符集用的
category.inc.php 控制帖数,今日发帖数的统计
cache.func.php 控制生成缓存文件的程序
attachment.func.php
识别附件拓展名,控制附件前面显示类别图片的程序, 还有附件大小的记录判断
advertisements.inc.php 处理广告显示用的
/crons
这里是计划任务文件,你可以增加自己的计划任务,而且可以调用系统变量
/tables
几个语言文件,很少改,跳过
/magic 道具脚本文件目录,跳过
/request 不用了解,直接忽略
/tasks 论坛任务脚本文件目录
/js 所有JS调用文件以及AJAX效果显示控制文件均在这里
bbcode.js Discuz!代码JS效果文件
calendar.js
日历显示
common.js 几乎所有的AJAX显示控制都在这里
floatadv.js 广告
google.js GOOGLE搜索
iframe.js 框架显示
insenz_reg.js 营销
md5.js MD5处理
post.js 发帖页面AJAX效果处理
qihoo.js QIHOO搜索
slide.js 图片附件显示效果处理
tree.js 树状表显示
video.js 视频显示
viewthread.js 主题浏览中的AJAX效果

./ipdataIP库文件目录,下面那个wry.dat就是IP库,这个我不会改)
./plugins
(插件存放目录)
./templates(模板目录,一般做HACK也要改模板,因此说明下)
/default(默认模板,从这个开始,其它风格以此类推)
activity_applylist.htm 活动主题申请列表
adv.htm 论坛广告显示
announcement.htm 公告
attachpay.htm 收费附件
attachpay_view.htm 查看已付费购买附件的用户列表
campaign.htm 论坛列表
credits.htm
积分策略
css_append.htm CSS拓展
css_calendar.htm CSS日历
css_common.htm 大部分风格修改都在此
css_editor.htm 编辑器风格
css_float.htm 浮动框风格
css_script.htm 常用JS脚本
css_seditor.htm 编辑器风格
css_topicadmin.htm 主题管理界面风格
css_viewthread.htm主题浏览页面风格
customtopics.htm
首页那个用户专题
debate_umpire.htm
辩论主题显示
discuz.htm 论坛的首页
discuzcode.htm 附件显示信息都在这里
ec_credit.htm 积分交易
ec_explain.htm 同上,这个是说明
ec_list.htm 交易列表
ec_rate.htm 交易评价
emailfriend.htm EMAIL
推荐主题
faq.htm FAQ
帮助手册,下面都是,只不过显示部分不一样,省略。
faq_navbar.htm FAQ的边栏显示
footer.htm
论坛底部信息
footer_ajax.htm 论坛底部的AJAX显示
footer_nofloat.htm 论坛底部无悬浮框页面
forumdisplay.htm
论坛主题列表
forumdisplay_passwd.htm 密码论坛输入密码提示页
forumdisplay_simple.htm 论坛主题列表
forumdisplay_subforum.htm
二级论坛列表
frame.htm 树状框架
getpasswd.htm
取回密码
groupexpiry.htm
公众用户组
header.htm
头部连接(上面有注册”“登录提示的就是)
header_ajax.htm 头部连接AJAX显示
index.htm
首页
invite_index.htm 邀请注册
invite_send.htm 邀请注册发送页面
jsmenu.htm 论坛的下拉框
leftmenu.htm 论坛的树状列表栏
login.htm
登录页面
magic_index.htm
论坛道具首页
magic_log.htm 论坛道具行为记录
magic_market.htm 论坛道具交易市场
magic_opreation.htm 论坛道具选项
magic_use.htm 道具使用
medal.htm勋章中心
memberlist.htm
会员列表,上面那个
memcp_credits.htm
控制面板(也叫个人中心——积分交易
memcp_credits_action.htm 控制面板——积分交易操作
memcp_credits_log.htm 控制面板——积分交易记录
memcp_profile.htm
控制面板——编辑个人资料
memcp_usergroups.htm
控制面板——公众用户组
memcp_usergroups_misc.htm 控制面板——公众用户组处理
memcp_validating.htm 控制面板——审核提示
modcp.htm 版主后台首页
modcp_announcements.htm 版主后台——公告
modcp_forumaccess.htm 版主后台——论坛管理权限
modcp_forums.htm 版主后台——论坛管理
modcp_home.htm 版主后台——主页
modcp_login.htm 版主后台登录提示页
modcp_logs.htm 版主后台——记录查看
modcp_members.htm 版主后台——用户编辑
modcp_moderate.htm 版主后台——审核
modcp_moderate_float.htm 版主后台——审核浮动框
modcp_posts.htm 版主后台——帖子管理
modcp_recyclebins.htm 版主后台——回收站
modcp_report.htm 版主后台——报告管理
modcp_threads.htm 版主后台——主题管理
my.htm
会员论坛行为
my_activities.htm 会员论坛行为——我的活动
my_buddylist.htm 会员论坛行为——我的好友
my_debate.htm 会员论坛行为——我的辩论
my_favorites.htm 会员论坛行为——我的收藏
my_grouppermission.htm 会员论坛行为——我的用户组权限
my_polls.htm 会员论坛行为——我的投票
my_posts.htm 会员论坛行为——我的回复
my_rewards.htm 会员论坛行为——我的悬赏
my_subscriptions.htm 会员论坛行为列表
my_threads.htm 会员论坛行为——我的主题
my_trades.htm 会员论坛行为——我的商品
my_tradestats.htm 会员论坛行为——我的商品状态
my_tradethreads.htm 会员论坛行为——我的商品主题
my_video.htm 会员论坛行为——我的视频
nopermission.htm 关闭论坛显示的提示页
pay.htm
买帖子
pay_view.htm
看帖子被谁买了
pm.htm
短信息左边菜单条
pm_archive_html.htm
导出短消息HTML
pm_checknew.htm 查看新短信
pm_node.htm 短信快速提示
pm_search.htm
搜索短消息
pm_search_result.htm
搜索短消息结果
pm_send.htm
发送短消息
pm_viewnew.htm
浏览短信息,内容更详细

post.htm 帖子发表
post_activity.htm 活动主题发表
post_attachments.htm
发帖子的附件模块
post_debate.htm 辩论主题发表
post_forumselect.htm 发表主题时的论坛选择列表
post_poll.htm 发表投票主题
post_reward.htm 发表悬赏
post_sortoption.htm 排序列表
post_swfattachlist.htm
批量上传附件
post_trade.htm 发表商品
post_video.htm 发表视频
rate.htm
评分
rate_view.htm
评分记录浏览
register.htm
注册
relatekw.htm 相关主题
relatetag.htm 相关标签
reportpost.htm
主题报告
request_assistant.htm 都是数据返回操作页,下均同
request_birthday.htm
request_forumtree.htm
request_modlist.htm
request_rowcombine.htm
request_tag.htm
request_thread.htm
search.htm
搜索主页
search_qihoo.htm QIHOO
搜索
search_sort.htm 排序
search_sortoption.htm 分类排序操作
search_trade.htm 商品搜索
search_threads.htm 搜索后的帖子列表
seccheck.htm 验证检查
seditor.htm 编辑器中的标准Discuz!代码
showmessage.htm
系统返回错误信息那个
stats_main.htm
统计首页
stats_misc.htm
管理统计、时间、积分等等一堆
stats_navbar.htm
统计上面那个菜单条
stats_onlinetime.htm
时间统计
stats_team.htm
管理团队
stats_trade.htm 商品交易统计
tag.htm 论坛标签
tag_threads.htm 和标签相关的主题列表
task.htm 论坛任务
task_parter.htm 完成任务的会员
topic.htm
又是QIHOO的随机广告
topicadmin.htm
主题管理
topicadmin_action.htm
主题管理动作选择
topicadmin_getip.htm
主题内查看IP
topicadmin_modlayer.htm
版主推荐

trade.htm 商品主题显示
trade_displayorder.htm 商品列表
trade_info.htm 商品信息
trade_view.htm 商品显示
viewpro_classic.htm
会员详细信息查看
viewthread.htm
浏览帖子
viewthread_activity.htm 活动主题的查看
viewthread_activity_info.htm 活动主题的信息表格
viewthread_debate.htm 辩论主题的查看
viewthread_debate_umpire.htm 辩论双方论点
viewthread_fastpost.htm 浏览主题时快速发帖
viewthread_iframe.htm 浏览主题时候的框架显示
viewthread_mod.htm 帖子管理记录
viewthread_node.htm 主题左侧用户信息
viewthread_pay.htm 帖子支付页面
viewthread_poll.htm 投票主题
viewthread_poll_voters.htm 投票者
viewthread_printable.htm 打印主题
viewthread_relatedthread.htm 相关主题查看
viewthread_reward.htm 悬赏主题查看
viewthread_reward_price.htm 悬赏信息
viewthread_trade.htm 商品主题查看
viewthread_video.htm 视频主题查看
warn_view.htm 会员警告信息查看
whosonline.htm
详细的在线动作
actions.lang.php
动作语言包
admincp.lang.php
后台语言包
admincp.menu.lang.php 后台菜单语言包
admincp.msg.lang.php 后台提示信息语言包
archiver.lang.php archiver
语言包
emails.lang.php
一堆EMAIL信息
feed.lang.php 论坛动态语言包
magics.lang.php 道具中心语言包
messages.lang.php
错误信息语言包
misc.lang.php
像最后编辑,由谁管理等等
modactions.lang.php
管理代号
pms.lang.php PM
,都是管理理由
request.lang.php 论坛使用说明语言包
runtime.lang.php 人性时间提示语言包
seccode.lang.php 验证信息语言包
swfupload.lang.php 批量上传附件信息语言包
tasks.lang.php 论坛任务语言包
templates.lang.php
前台模板的语言包
wap.lang.php wap
用的语言包

./uc_client
./uc_server (UCenter
的通讯及处理文件,也保存有会员头像等信息,不必理会)
./wap (WAP模式控制都在这里)
index.php 论坛首页
/include
forum.inc.php 论坛列表显示和权限控制
global.func.php 全局函数
goto.inc.php 主题跳转
home.inc.php 主页查看
login.inc.php 论坛登录
my.inc.php 个人在论坛的所有的活动的信息的查看
myphone.inc.php 我的手机信息查看
post.inc.php 发帖功能操作
register.inc.php 注册
search.inc.php 搜索
stats.inc.php 论坛统计
thread.inc.php 主题浏览

php

Discuz!二次开发必备知识——DZ程序变量

Tags: , ,

变量名称                          名称说明
A]字母组
$action
操作
$adminid
管理级别
$adminemailconfigincphp
里面设置的那个
$adminid
管理组id1管理员2超版3普版-1特殊)
$adminpaccess
不详
$allowanonymous
是否允许匿名
$allowavatar
是否允许使用头像
$allowbanip
是否允许ban ip
$allowbanuser
是否允许ban用户
$allowviewip
是否允许查看IP
$allowgetattach
是否允许下载附件
$allowpostannounce
是否允许发公告
$allowcensorword
是否允许设置词语过滤(主观臆测)
$allow
反正就是权限的全局变量,等回在整理
$attahdir
附件上传目录(绝对)
$attachextsions
允许的附件扩展名(应该是)
$attachimgpost
帖子中是否显示图片附件
$attachrefcheck
下载附件是否来路检查
$attachsave
附件保存方式
$attachurl
附件上传目录(相对)
$attackevasiveconfigincphp
中设置,防DDOS攻击设置,详细见该文件
$avatarshow_license
天下秀license
$avatarshowdefault
系统管理中显示默认形象设置
$avatarshowheight
系统管理中头像最大高度
$avatarshowwidth
系统管理的头像宽度
$avatarshowid
用户头像所对应用户的 UID
$archiverstatus
启用 Archiver
$attachrefcheck
下载附件来路检查
$avatarshowstatus
关闭天下秀
$allowvisit
允许访问
$allowpost
允许发帖
$allowreply
允许回复
$allowpostpoll
允许发投票
$allowdirectpost
允许直接发帖
$allowgetattach
允许查看附件
$allowpostattach
允许上传附件
$allowvote
允许投票
$allowmultigroups
允许加入/离开公众用户组
$allowsearch
允许搜索
$allowavatar
允许使用头像
$allowcstatus
允许使用自定义头衔
$allowuseblog
允许使用BLOG
$allowinvisible
允许隐身
$allowtransfer
允许积分转账
$allowsetreadperm
允许设置帖子阅读权限
$allowsetattachperm
允许设置附件阅读权限
$allowhidecode
允许使用HIDE
$allowhtml
允许使用HTML
$allowcusbbcode
允许使用自定义BBCODE
$allowanonymous
允许匿名
$allownickname
允许用昵称
$allowsigbbcode
允许签名用BBCODE
$allowsigimgcode
允许签名用IMG
$allowviewpro
允许看个人信息
$allowviewstats
允许看统计
$attachextensions
附件允许拓展名
$adminemail
论坛系统 Email
$attachdir
附件保存位置
$attachurl
附件路径 URL 地址
$attackevasive
防护大量正常请求造成的拒绝服务攻击
B]字母组
$bbname
论坛名
$boardurl
论坛地址
{$boardurl}forumdisplay?fid=$fid
版块地址
{$boardurl}viewthreadphp?tid=$tid
帖子地址
$bdaystatus
发送生日邮件
$bannedmessages
禁言是否显示该用户已经被屏蔽的信息
$bbclosed
是否关闭论坛
$bbinsert
是否用BBCODE代码
$bbrules
论坛规则
$bbrulestxt
论坛规则是否允许使用HTML
$boardlicensed
显示论坛授权信息
C]字母组
$credits
积分
$censoremail
启用EMAIL审核
$censoruser
启用用户审核
$closedreason
论坛关闭显示的信息
$creditsformula
积分公式
$creditsformulaexp
还是公式?
$creditsnotify
启用的拓展积分
$creditspolicy
积分策略
$creditstax
积分交易手续费比率
$creditstrans
交易积分设置
$custombackup
?未知
$cookiedomaincookie
作用域
$cookiepathcookie
作用路径
D]字母组
$db
数据库操作类
$discuz_user $discuz_userss
当前用户名
$discuz_uid
当前uid
$discuz_pw
当前用户密码的 MD5
$discuz_secques
当前用户安全提问信息
$dateformat
用户的日期格式
$delayviewcount
点击数延迟更新
$debug
显示程序运行信息
$dotfolders
本人发起或回复的主题显示加点图标
$dupkarmarate
允许重复评分
$digest
精华
$dotfolders
是否将当前用户的主题加点
$delayviewcount
浏览延迟
$deletereason
删除理由
$doublee
允许同一 Email 注册不同用户
$dupkarmarate
允许重复评分
$dbhost
数据服务器
$dbuser
数据库用户名
$dbpw
数据库密码
$dbname
数据库名
$dbreport
是否发送数据库错误报告
$databaseMySQL
版本设置
$dbcharsetMySQL
字符集
E]字母组
$extcredits
扩展积分信息(array)
$extcredits
拓展积分
$exchangemincredits
兑换最低余额
$edittimelimit
编辑帖子限制时间
$editedby
显示最后编辑信息
$errorreport
是否报告 PHP 错误
F]字母组
$forum[name]
版块名字
$fastpost
快速发帖
$fullmytopics
我的话题全文搜索
$forumjump
显示论坛跳转菜单
$floodctrl
发帖灌水预防()
$fastpost
显示快速发表
$forcesecques
管理人员必须设置安全提问才能进入系统设置
G]字母组
$gzipcompress
页面 Gzip 压缩
$globalstick
启用全局置顶
$groupid
用户组ID
H]字母组
$hideprivate
隐藏无权访问的论坛
$hottopic
热门主题帖数
$hideprivate
隐藏无权访问的论坛
$headercharset
强制设置字符集,只乱码时使用
I]字母组
$ipaccessIP
允许访问后台权限
$ipregctrlIP
注册控制
J]字母组
$jscachelifeJS
数据缓存时间()
$jsrefdomainsJS
来路限制
$jsstatus
启用JS
K]字母组
$keyword
关键字
$karmaratelimit
评分时间限制(小时):
L]字母组
$loadctrl
系统负载控制
$losslessdel
删帖不减积分最大天数
$loadctrl
负载控制
N]字母组
$navtitle
标题
$navigation
描述
$nocacheheaders
禁止浏览器缓冲
$newgroupid
新用户组别
$newsletter?
未知
$newbiespan
新手见习时间
M]字母组
$memberperpage
每页显示会员数
$modworkstatus
论坛管理工作统计
$maxonlines
最大在线人数
$maxspm60
秒最大搜索次数
$maxsearchresults
最大搜索结果
$maxsmilies
最大单一 Smilies解析次数
$membermaxpages
用户列表最大页数
$memliststatus
允许查看会员列表
$maxbdays
首页显示生日
$modworkstatus
启用管理统计
$modreasons
管理理由
$modratelimit
版主评分限制
$moddisplay
版主显示方式
$minpostsize
最小字数
$memliststatus
启用会员列表查看
$memberperpage
会员列表每页显示会员
$membermaxpages
会员列表最大页数
$maxthreadads
主题广告最大数目
$maxspm60
秒最大搜索次数
$maxsmilies
同一SMILES最大解析数
$maxsigrows
最大签名高度
$maxsearchresults
最大搜索结果
$maxpostsize
帖子最大字数
$maxpolloptions
投票最大选项数
$maxonlines
最大在线人数
$maxmodworksmonths
管理记录保留最长时间
$maxincperthread
单主题最高收入
$maxchargespan
单主题最高出售时限(小时):
$maxprice
最大售价
$maxattachsize
最大附件尺寸
$maxsizeperday
一天最大附件尺寸
$maxpmnum
最大购买天数
O]字母组
$onlineip
用户 IP
$oltimespan
用户在线时间更新时长(分钟)
$onlinehold
在线保持时间
P]字母组
$post[authortitle]
用户组
$ppp
每页显示贴数
$posts
帖数
$postperday
平均每日的发帖
$pconnect
数据库持久连接
R]字母组
$rssstatus
启用 RSS
$rewritestatusURL
静态
$regfloodctrl24
小时注册尝试次数限制
$reportpost
允许向版主报告帖子
$readaccess
关系到阅读权限
$rewritestatus
静态启用规律
$reportpost
启用报告
$regverify
注册审核启用
$regstatus
允许注册
$regfloodctrl24
小时注册尝试次数限制
$regctrlIP
注册间隔限制(小时)
$reasonpmPM
强制理由
$raterange
评分范围
S]字母组
$styleid
当前风格的 ID
$stylejump
显示风格下拉菜单
$sessionexists
是否更新 sessions
$statstatus
使用论坛流量统计
$statscachelife
统计系统缓存时间
$seccodestatus
启用验证(安全)
$searchctrl
搜索时间限制()
$subforumsindex
首页显示论坛的下级子论坛
$stylejump
风格跳转菜单
$statstatus
启用统计
$statscachelife
统计更新时间(分钟)
$starthreshold
星星升级
$smileyinsert
启用 SMILES
$smcols
一行显示 SMILES 个数
$showemail
显示 EMAIL
$seokeywords
关键字
$seodescription
头部描述
$seccodestatus
验证码启用
$searchctrl
搜索控制时间
$searchbanperiods
禁止全文搜索时间段
T]字母组
$tablepre
表前缀
$timestamp
时间信息
$timeformat
用户的时间格式
$timeoffset
用户的时差
$thread[author]
作者
$thread[dateline]
时间
$thread[replies]
评论次数
$thread[views]
查看次数
$thread[subject]
帖子名称
$tpp
每页显示主题数
$threadmaxpages
主题列表最大页数
$transsidstatus
启用 URL 传递 sid
$transfermincredits
转账最低余额
$topicperpage
每页主题
$threadmaxpages
主题列表最大页数
$tplrefresh
模板自动刷新开关
U]字母组
$userstatusby
用户组头衔衡量标准
V]字母组
$visitedforums
显示最近访问论坛数量
$vtonlinestatus
帖子中显示作者状态
$version
当前的版本
$visitbanperiods
禁止访问时间段
W]字母组
$welcomemsg
禁止自动向新注册用户发送欢迎短消息
$whosonlinestatus
显示在线用户
$wapstatus
启用 WAP
$watermarkquality
水印透明度
$whosonlinestatus
在线列表显示方式
$welcomemsgtxt
欢迎短信息内容
$welcomemsg
启用欢迎短信息
$watermarkstatus
启用水印
$watermarktrans
水印融合度
$waptppWAP
浏览页数
$wapstatus
启用WAP
$wappppWAP
浏览显示主题数
$wapmpsWAP
页最大长度
$wapdateformatWAP
时间格式
$wapcharsetWAP
字符设定
变量名称                          名称说明
IN_DISCUZ
是否在论坛里
DISCUZ_ROOT
路径
CURSCRIPT
某些页面自定义
FORMHASH
随机串
变量名称                          名称说明
_]字符组
$_DCACHE
。。。。。。。。。。。。。。。。。。。。。。。。cache数组
$_DPLUGIN
。。。。。。。。。。。。。。。。。。。。。。。。pluginscache数组(要预先require相关cache文件)
A]字母组
$advlist
存储广告信息(头部广告等等)
C]字母组
$creditspolicy
存储积分策略
E]字母组
$extcredits
扩展积分信息
F]字母组
$forum
看名字是存储版面信息
G]字母组
H]字母组
$hooks
钩子
I]字母组
J]字母组
K]字母组
L]字母组
N]字母组
M]字母组
$modreasons
管理操作时候的默认理由
$mtime
精确的时间
O]字母组
P]字母组
$plugins
前台插件列表
Q]字母组
$qihoo_links
qihoo有关
R]字母组
$raterange
评分功能中控制最大值和最小值
S]字母组
T]字母组
$timenow = array(’timeoffset’ => ‘+8′,’time’ =>’2006-6-3006:22 PM’);
好用吧
$thread['password']
密码
U]字母组
V]字母组
W]字母组
X]字母组
Y]字母组
Z]字母组


[Copy to clipboard]CODE:
作者:$thread[author]
时间:$thread[dateline]
评论次数:$thread[replies]
查看次数:$thread[views]
用户组:$post[authortitle]
论坛名称:$bbname
论坛地址:$boardurl
版块名字:$forum[name]
版块地址:{$boardurl}forumdisplay?fid=$fid
帖子名称:$thread[subject]
帖子地址:{$boardurl}viewthreadphp?tid=$tid

变量:
$bbname
论坛名
$boardurl
论坛地址
$styleid
当前风格的id
$extcredits
扩展积分信息(array)
$version D4
的版本
$tablepre
表前缀
$timestamp
时间信息(那个字真的不懂怎么拼, 所以不懂写)
$onlineip
用户ip
$db
数据库操作类
$discuz_user $discuz_userss
当前用户名
$discuz_uid
当前uid
$discuz_pw
当前用户密码的md5
$discuz_secques
当前用户安全提问信息
$sessionexists
是否更新 sessions
$dateformat
用户的日期格式
$timeformat
用户的时间格式
$timeoffset
用户的时差
$navtitle
标题
$navigation
描述
$adminid
管理级别
常量:
IN_DISCUZ
是否在论坛里
DISCUZ_ROOT
路径
CURSCRIPT
某些页面自定义
FORMHASH
随机串
数组类(看详细内容用print_r(数组名)
$_DCACHE cache
数组
$_DPLUGIN plugins cache
数组(要预先require相关cache文件)
$advlist
存储广告信息(头部广告等等)
$creditspolicy
存储积分策略
$extcredits
扩展积分信息
$forum
看名字是存储版面信息
$hooks
钩子
$modreasons
管理操作时候的默认理由
$mtime
精确的时间
$plugins
前台插件列表
$qihoo_links
qihoo有关(废话),具体不知道(无数臭鸡蛋飞来)
$raterange
不知道……
$timenow = array(’timeoffset’ => ‘+8′,’time’ =>’2006-6-3006:22 PM’);
好用吧
应该是全了,剩下还有的什么$_SERVER的就不说了

变量部分
$adminemail configincphp
里面设置的那个
$adminid
管理组id1管理员2超版3普版-1特殊)
$adminpaccess
不详
$allowanonymous
是否允许匿名
$allowavatar
是否允许使用头像
$allowbanip
是否允许ban ip
$allowbanuser
是否允许ban用户
$allowcensorword
是否允许设置词语过滤(主管臆测)
$allow
反正就是权限的全局变量,等回在整理
$attahdir
附件上传目录(绝对)
$attachextsions
允许的附件扩展名(应该是,我的这个值是chm,pdf,zip,rar,tar,gz,bzip2,gif,jpg,jpeg,png
$attachimgpost
帖子中是否显示图片附件
$attachrefcheck
下载附件是否来路检查
$attachsave
附件保存方式
$attachurl
附件上传目录(相对)
$attackevasiveconfigincphp
中设置,放DDOS攻击设置,详细见该文件
$authkey
不详
$avatarshow_license
天下秀license(不需要我们操心的东西)
$avatarshowdefault
系统管理中显示默认形象设置
$avatarshowheight
系统管理中头像最大高度
$avatarshowid
不详,反正根头像显示有关。猜测是显示天下秀还是用户头像

php, 产业新闻

2009/11/19

Discuz! 7.2发布,优化30余项细节

Tags:

中国领先的社区平台与服务提供商康盛创想(Comsenz)旗下核心产品Discuz!新版正式发布。全新推出的Discuz! 7.2版本从用户注册登陆应用、社区论坛前后管理两方面着眼,增加和改进了30多处与社区门户运营密切相关的功能与细节,实现了邮箱登陆、分类信息检索、版块绑定域名等功能。

应用为王
应用为王,Discuz! 7.2版本充分贴近一线站长的运营需求。为了把握当前主流社区产品的应用趋势,满足地方及垂直社区门户化、规模化发展的应用需求,康盛创想官方开发团队通过需求调研和走访交流,与全国各地数千名站长面对面的对话与沟通,在Discuz! 7.1版本的基础之上完成了产品的升级换代,实现了当前站长需求最迫切的数十项产品功能。

细节为本
Discuz! 7.2版本实现了30余项细节优化与改进。在用户应用方面,用户登录实现了电子邮件、UID、用户名多种登录方式,引入深受用户关注的邮件登陆方式。同时 注册用户审核功能进一步得到了加强,当注册用户是来自指定IP段,可以不经过任何审核直接成为正式会员,非常适合一些地方社区门户的运营。主题阅读方面, 实现了“倒序看帖”功能,在用户看帖的时候,最新的回复也能显示在前面,可以更丰富的主题展现形式方便用户在社区中的应用。

Discuz! 7.2版本社区论坛的管理设置更加灵活,站长设置管理组的自由度更高,对产品的前后台权限全面进行了细化,前台增加了非常多的权限,方便分配更多更细的管 理身份。主题在任意版块中置顶,让主题管理更轻松。主题鉴定、数据调用、抢楼帖、特殊版块、版块列表、版块名称颜色、评分理由显示、附件直接播放、版块域 名绑定等诸多产品细节改进以尊重应用习惯为根本,尽可能做到让社区论坛系统应用与管理更加得心应手。

效率无忧
Discuz! 7.2版本搜索之上可提供全文检索方案。搜索是网络社区最常用也是最考验系统效率的功能之一,该版本不仅针对分类信息功能优化了检索的方式和效率,同时也 针对高级搜索页面显示进行了调整,当用户点开高级后记录了状态,下次默认为显示,关闭高级项时同样也记录状态,只要不清除Cookie就会一直记录。当前 社区论坛被广泛的应用于地方及垂直社区门户,采用Discuz!系统搭建的网站已经超过110余万家。康盛创想针对规模型社区门户推出的全文检索解决方案,可基于Discuz! 7.2版本标准轻松实现。通过软硬件系统相结合的全文搜索技术,可以彻底免除规模型社区门户运营与发展的后顾之忧。

产业新闻

2009/11/18

在Discuz!NT中进行缓存分层

Tags:

在以前的两篇文章中,介绍了Discuz!NT中的缓存设计思路以及如何引入Memcached,当然前者是IIS进程的缓存(本地缓存),后者是分布式内存对象缓存系统。

两者通过Discuz!NT中的memcached.config文件中的ApplyMemCached结 点的值来决定使用哪一种缓存方式。不过在之后,有朋友反映当使用Memcached时,特别是在大并发来时,效率会打折扣,甚至有很多时间会消耗在 socket套接字(创建和传输方面)上。而事实上也的确如此,尽管Memcached在使用池化的方式初始化一定数量的套接字资源(之前测试时实始化为 128个链接),在小并发(100左右)时,可能问题不大,但并发上了1000-2000时,其效率要比本地化缓存机制低1/3(loadrunner测 试场景),比如loadrunner测试1000并发时,如果showtopic(显示主题),本地缓存处理时间为15秒,而使用memcached可能 会达到25-35秒。

显然这是用户所不能忍受的,所以要想解决方案。也就有了今天的文章。

其实要解决这个问题的原理很简单,就是将之前的两种缓存方案(本地缓存和memcached)进行整合,原理如下:

首先在iis进程中会将要缓存的数据缓存一份,同时也将该数据放入memcached一份,当然本地缓存的数据生命周期要比memcached少。这就造成本地缓存数据到期后,当再次访问其则将memcached中的数据加载到本地缓存中并返回给应用程序。当缓存的数据更新时,则要更新memcached中的数据和本地缓存的数据(当然如果你要将应用程序布署的到多个站点时,因为不同的站点运行在不同的web园或主机上,这时你就不可以用最简单的方式来更新其它进程和主机上的应用程序了,因为当前缓存的数据只保存在当前web园进程中),这也就是为什么要给本地缓存数据设置到期时间这个值,让其在到期后来自动从memcached获取数据。

原理解释完了之后,我们来看看如何实现这个方案.

首先,我们要看一下默认的本地缓存策略文件,其功能也就是两年前所说的那个本地缓存策略功能,如下:

/// <summary>
/// 默认缓存管理类
/// </summary>
public class DefaultCacheStrategy : ICacheStrategy
{
private static readonly DefaultCacheStrategy instance = new DefaultCacheStrategy();

protected static volatile System.Web.Caching.Cache webCache = System.Web.HttpRuntime.Cache;

/// <summary>
/// 默认缓存存活期为3600秒(1小时)
/// </summary>
protected int _timeOut = 3600;

private static object syncObj = new object();

/// <summary>
/// 构造函数
/// </summary>
static DefaultCacheStrategy()
{}

/// <summary>
/// 设置到期相对时间[单位: 秒]
/// </summary>
public virtual int TimeOut
{
set { _timeOut = value > 0 ? value : 3600; }
get { return _timeOut > 0 ? _timeOut : 3600; }
}

public static System.Web.Caching.Cache GetWebCacheObj
{
get { return webCache; }
}

/// <summary>
/// 加入当前对象到缓存中
/// </summary>
/// <param name=”objId”>对象的键值</param>
/// <param name=”o”>缓存的对象</param>
public virtual void AddObject(string objId, object o)
{
if (objId == null || objId.Length == 0 || o == null)
{
return;
}

CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);

if (TimeOut == 7200)
{
webCache.Insert(objId, o,
null, DateTime.MaxValue, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High, callBack);
}
else
{
webCache.Insert(objId, o,
null, DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
}
}

/// <summary>
/// 加入当前对象到缓存中
/// </summary>
/// <param name=”objId”>对象的键值</param>
/// <param name=”o”>缓存的对象</param>
public virtual void AddObjectWith(string objId, object o)
{
if (objId == null || objId.Length == 0 || o == null)
{
return;
}

CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);

webCache.Insert(objId, o, null, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
}

/// <summary>
/// 加入当前对象到缓存中,并对相关文件建立依赖
/// </summary>
/// <param name=”objId”>对象的键值</param>
/// <param name=”o”>缓存的对象</param>
/// <param name=”files”>监视的路径文件</param>
public virtual void AddObjectWithFileChange(string objId, object o, string[] files)
{
if (objId == null || objId.Length == 0 || o == null)
{
return;
}

CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);

CacheDependency dep = new CacheDependency(files, DateTime.Now);

webCache.Insert(objId, o, dep, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
}

/// <summary>
/// 加入当前对象到缓存中,并使用依赖键
/// </summary>
/// <param name=”objId”>对象的键值</param>
/// <param name=”o”>缓存的对象</param>
/// <param name=”dependKey”>依赖关联的键值</param>
public virtual void AddObjectWithDepend(string objId, object o, string[] dependKey)
{
if (objId == null || objId.Length == 0 || o == null)
{
return;
}

CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);

CacheDependency dep = new CacheDependency(null, dependKey, DateTime.Now);

webCache.Insert(objId, o, dep, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
}

/// <summary>
/// 建立回调委托的一个实例
/// </summary>
/// <param name=”key”></param>
/// <param name=”val”></param>
/// <param name=”reason”></param>
public void onRemove(string key, object val, CacheItemRemovedReason reason)
{
switch (reason)
{
case CacheItemRemovedReason.DependencyChanged:
break;
case CacheItemRemovedReason.Expired:
{
//CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(this.onRemove);

//webCache.Insert(key, val, null, System.DateTime.Now.AddMinutes(TimeOut),
// System.Web.Caching.Cache.NoSlidingExpiration,
// System.Web.Caching.CacheItemPriority.High,
// callBack);
break;
}
case CacheItemRemovedReason.Removed:
{
break;
}
case CacheItemRemovedReason.Underused:
{
break;
}
default: break;
}
}

/// <summary>
/// 删除缓存对象
/// </summary>
/// <param name=”objId”>对象的关键字</param>
public virtual void RemoveObject(string objId)
{
if (objId == null || objId.Length == 0)
{
return;
}
webCache.Remove(objId);
}

/// <summary>
/// 返回一个指定的对象
/// </summary>
/// <param name=”objId”>对象的关键字</param>
/// <returns>对象</returns>
public virtual object RetrieveObject(string objId)
{
if (objId == null || objId.Length == 0)
{
return null;
}
return webCache.Get(objId);
}
}

因为在一开始设计Discuz!NT缓存方案时,就使用了Strategy(策略)模式,所以这里我们只要将上面所说的改动方案以继承的方式继承自上面的

DefaultCacheStrategy 之后,就可以在DNTCache中使用它了。因为之前我已经将memcached引入到了discuznt产品中,所以这里只要改动一下已有的那个MemCachedStrategy,使其支持上面所说的缓存分布方案即可,请看下面的代码

/// <summary>
/// 企业级MemCache缓存策略类,只能使用一个web园程序
/// </summary>
public class MemCachedStrategy : DefaultCacheStrategy
{
/// <summary>
/// 添加指定ID的对象
/// </summary>
/// <param name=”objId”></param>
/// <param name=”o”></param>
public override void AddObject(string objId, object o)
{
//先向本地cached加入,然后再加到memcached
RemoveObject(objId);

base.AddObject(objId, o);

MemCachedManager.CacheClient.Set(objId, o);
}

/// <summary>
/// 添加指定ID的对象(关联指定文件组)
/// </summary>
/// <param name=”objId”></param>
/// <param name=”o”></param>
/// <param name=”files”></param>
public override void AddObjectWithFileChange(string objId, object o, string[] files)
{
;
}

/// <summary>
/// 添加指定ID的对象(关联指定键值组)
/// </summary>
/// <param name=”objId”></param>
/// <param name=”o”></param>
/// <param name=”dependKey”></param>
public override void AddObjectWithDepend(string objId, object o, string[] dependKey)
{
;
}

/// <summary>
/// 移除指定ID的对象
/// </summary>
/// <param name=”objId”></param>
public override void RemoveObject(string objId)
{
//先移除本地cached,然后再移除memcached中的相应数据
if (base.RetrieveObject(objId) != null)
base.RemoveObject(objId);

if (MemCachedManager.CacheClient.KeyExists(objId))
MemCachedManager.CacheClient.Delete(objId);
}

/// <summary>
/// 返回指定ID的对象
/// </summary>
/// <param name=”objId”></param>
/// <returns></returns>
public override object RetrieveObject(string objId)
{
object obj = base.RetrieveObject(objId);
if (obj == null)
{
obj
= MemCachedManager.CacheClient.Get(objId);
if (obj != null)
base.AddObject(objId, obj);
}

return obj;
}

/// <summary>
/// 到期时间
/// </summary>
public override int TimeOut
{
get
{
return MemCachedConfigs.GetConfig().LocalCacheTime;
}
}
}

注:MemCachedStrategy 原来已实现了ICacheStrategy接口,参见这篇文章

这样,我们还是可以通过memcached.config中的ApplyMemCached来判断是否使用本地缓存方案还是当前的缓存分层方案。当然原有的memcache.config中还有添加一下属性用于记录当使用缓存分层方案之后的本地缓存的缓存数据时间,以向上面的类属性TimeOut注入相应参数信息。

这样memcached.config的内容就会变成这个样子(本地测试配置):

<?xml version=”1.0″?>
<MemCachedConfigInfo xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance%22 xmlns:xsd=”http://www.w3.org/2001/XMLSchema%22>
<ApplyMemCached>true</ApplyMemCached>
<ServerList>10.0.2.137:11211</ServerList>
<PoolName>DiscuzNT_MemCache</PoolName>
<IntConnections>128</IntConnections>
<MinConnections>128</MinConnections>
<MaxConnections>512</MaxConnections>
<SocketConnectTimeout>1000</SocketConnectTimeout>
<SocketTimeout>3000</SocketTimeout>
<MaintenanceSleep>30</MaintenanceSleep>
<FailOver>true</FailOver>
<Nagle>true</Nagle>
<LocalCacheTime>60</LocalCacheTime>
</MemCachedConfigInfo>

这样,当使用Lr测试时,其在并发1000的情况下与使用本地缓存方案的响应时间基本稳定在15秒左右,想一下大家就会明白了,因为在数据首次加载并进行 缓存时(本地和memcached都会缓存一份,参见上面的实现代码)。当再次访问时,如在60秒的数据有效期内,仅访问本地缓存,只有在数据过期时间, 才会运行再次加载数据的工作,而这种加载也只是从memcached中获得数据,这里我们可以暂时将memcached中的数据想像是永不过期,这样就可以减少对database的访问压力,因为这时相对于本地缓存而言,memcached已经变成了一个‘缓存数据库’了:

public override object RetrieveObject(string objId)
{
object obj = base.RetrieveObject(objId);
if (obj == null)
{
obj
= MemCachedManager.CacheClient.Get(objId);
if (obj != null)
base.AddObject(objId, obj);
}

return obj;
}

现在用两张图再对比说明之前的memcached与现在的缓存分层方案:

改进后:

总结:其实在大网站的 数据缓存方案中,往往会将大量的数据(不经常变化或对时效性要求不强,但却需频繁访问的数据)放入到缓存中,以此来降低数据库的负载。本地缓存数据的时效 性和稳定性受制于IIS进程中线程的运行情况,资源的占用等因素影响,可以说数据的稳定性(不易丢失)远不如memcached,所以这种分层方案可以有 效的解决这个问题,当然这种做法还有一些其它方面的好处,就不一一说明了。

php

2009/10/20

Discuz!用户怎样减少广告灌水机的骚扰

Tags: , ,

问:我们的论坛用的是Discuz!,访问量很大,最近一直受到广告灌水机的骚扰。所以我 想找到一个好的论坛广告管理机制,不知道有没有更好的解决方案?目前,我找到的解决方案似乎,用后台的管理功能,限制用户发帖时间,每隔一定时间(比如多 少秒)才能发表一张帖。不过,这样的限制如果设置的时间大于5秒,也会妨碍了正常的用户访问,发广告的灌水工具来发根本没有影响,因为它是自动的。请问该 怎么样解决?

答:关于广告灌水机的问题,我们都是深恶痛绝的。一般而言,广告的灌水工具(或发帖机器)现在都能内容相同但标题不同(添加特 殊字符、随机串或多余空格的方式),因此,从论坛软件来说,根据内容对帖子限定是无效的。并且,采用这种机制,程序对数据库的压力极大,站长的硬件资源也 将消耗很多。因此,Discuz!考虑到最终效果得不偿失,所以未予实施上述办法。

当然,Discuz!也不会放弃寻找更好的办法。目前,用户采用最新版本的Discuz!4.1,可以寻找的解决方案有两个:
一是采用发帖验证码;二是采用更长的灌水限制时间。
此外,Discuz!拟将在5.0中采用如下方案(www和wap上都要限制):
同一用户(假定不为游客)最近一小时(或一天)发帖数限制(标明影响效率)“maxppd(maxpostsperday)
if($discuz_uid) {SELECT COUNT(*) FROM cdb_posts WHERE dateline>’$timestamp’-86400 AND authorid=’$discuz_uid’
}”

一般而言,这样应该可以更有效解决广告灌水的问题。
不过,考虑到Discuz!应用面的广泛,那些灌水机也一定不断寻找新的办法来骚扰。所以,我们需要更多的用户与我们一起去解决问题。

PHP业界, php, 网站建设

2009/10/16

康盛创想核心产品Discuz! 7.1正式开源发布

Tags: , , , ,

10月16日上午,中国领先的社区平台与服务提供商康盛创想(Comsenz)核心产品Discuz! 7.1版本正式开源发布。该产品在创新性的引入社交化互动元素的同时,进一步改进了社区论坛系统的插件开发机制,降低了网络社区应用与二次开发的门槛。

Discuz! 7.1版本创新性引入了更多社交网络(SNS)互动元素,提醒系统、新编辑器、新手任务、社区热点、主题关注等功能的推出,成为主流网络社区创新应用的新趋势。在经典的Discuz! 7.0版本基础之上,进一步完善了社区论坛系统的功能。