《本科毕业设计---基于php框架的社区论坛管理系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《本科毕业设计---基于php框架的社区论坛管理系统的设计与实现.doc(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 密级: 基于PHP框架的社区论坛管理系统的设计与实现Research Php BBS Forum Management System Based on Yii Framework摘 要社区论坛管理系统是互联网上的一种电子信息服务系统。每个用户都可以在在论坛上提出自己的想法。近些年来,通过编程人员和很多爱好者的努力,BBS论坛的功能得到了很大的扩充。而如今的BBS论坛系统功能更丰富,允许用户之间分享工具软件,技术文档等资源。如何设计稳定的BBS系统,是每个开发人员必须要考虑的问题,一个成功的BBS系统可大大提高承载此论坛的网站点击率,为了使一个论坛系统发挥更大的作用,使企业的用户加入到产品、服
2、务等内容的讨论上来,对企业的发展有很好的促进作用。论文介绍了课题研究的背景和意义及国内外发展状况,详细介绍了课题采用的相关技术。结合用户业务基本要求,进行了详细的分析研究,确定该系统主要功能包括七大模块:个人用户管理功能、论坛内容展示功能、会员管理与维护功能、分区管理与维护功能、板块管理与维护功能、文章管理功能和回帖管理功能。本文较为详尽的阐述了主要功能模块的实现过程。本系统使用Zend Studio集成开发环境编写,并使用基于MVC模式的Yii框架技术进行开发。利用Sphinx全文检索引擎实现文章搜索。系统前台数据采用文件缓存和Memcache缓存技术,可以大大提高用户体验。后台数据库使用甲
3、骨文公司的Mysql数据库,利用SQLyog实现对数据库的管理和操作。在以面向对象的程序设计技术为指导思想的前提下,完成了本系统的具体实现过程。系统解决了大访问量下对网站的压力,对使用该系统的企业发展有很好的辅助作用。关键词:论坛管理系统;全文检索;Sphinx;Memcache;MysqlAbstractCommunity Community forum management system is an electronic information service system on the Internet. Every user can put forward his ideas in t
4、he forum. In recent years, through the programming of personnel and many enthusiasts, the function of the forum BBS has been greatly expanded. And todays BBS forum system features richer, allowing users to share between the tools and software, technical documentation and other resources. How to desi
5、gn the stability of the BBS system, each developer must consider the problem, a successful BBS system can greatly improve the bearing of this forum website click rate, in order to make a forum system play a greater role, the enterprise user added to the products, services, and other content are disc
6、ussed, the development of enterprises has a good role in promoting.This paper introduces the background and significance of the research and the development of the domestic and foreign, and introduces the technology of the subject. Combined with the business users basic requirements, detailed analys
7、is and research, identify seven modules: individual user management function, the content of the Forum display function, member management and maintenance functions, partition management and maintenance functions, sector management and maintenance functions, article management function and replies m
8、anagement function, including the main function of the system. This paper expounds the realization of the main function modules in detail.This system uses Studio Zend integrated development environment, and uses the Yii framework technology based on MVC mode to develop. Use Sphinx full-text search e
9、ngine to achieve the article search. System foreground data using file caching and Memcache caching technology can greatly improve the user experience. Database using the Oracle Corp Mysql database, using SQLyog to achieve the database management and operation. In the premise of the object oriented
10、programming technology, the concrete realization of the system is completed. The system has solved the pressure of the website under the large amount of visit, and has good assistant for the development of the enterprise.Keyword: Forum management system; full-text search; Sphinx; Memcache; Mysql目 录摘
11、 要IAbstractII目 录IV第 1 章 引 言- 1 -1.1 系统开发背景- 1 -1.2 国内外发展状况- 2 -1.2.1 国内方面- 2 -1.2.2 国外方面- 2 -1.3 研究内容及目标- 3 -第 2 章 相关技术综述- 4 -2.1 Zend Studio- 4 -2.2 Yii框架- 5 -2.3 Sphinx- 5 -2.4 UEditor- 5 -第 3 章 系统分析与设计- 7 -3.1 系统分析- 7 -3.2 系统运行环境- 7 -3.2.1 系统安全性- 8 -3.2.2 系统通用性- 8 -3.3 功能设计- 8 -3.4 数据库设计- 10 -3.5
12、关键问题讨论- 13 -3.5.1数据库设计- 13 -3.5.2访问量大时的解决方法- 13 -3.5.3搜索功能- 13 -第 4 章 系统功能详细实现- 14 -4.1 个人用户管理功能- 14 -4.2 论坛内容展示功能- 16 -4.3 会员管理功能- 19 -4.3.1 添加会员功能- 19 -4.3.2 会员管理功能- 22 -4.4 分区管理功能- 25 -4.4.1 添加分区- 26 -4.4.2 分区管理- 28 -4.5 版块管理功能- 30 -4.5.1 添加版块- 30 -4.5.2 版块管理- 32 -4.6 文章管理功能- 35 -4.6.1 查看文章列表- 35
13、 -4.6.2 删除文章- 36 -4.7 回帖管理功能- 37 -4.7.1 查看帖子列表- 37 -4.7.2 删除回帖- 39 -第 5 章 结 论- 40 -参 考 文 献- 41 -致 谢- 42 - 41 -第 1 章 引 言在现在快速发展的社会,互联网技术得到更快的发展,已经不是日新月异就能形容的信息化世界里,更加动态性、交互性与时速性的网络论坛成为其中最快速、最丰富和最自由的网络信息资源,也是最受广大的现代人类欢迎的信息交流方式之一。1.1 系统开发背景论坛管理系统是一种对某些问题、看法互相学习的系统,论坛系统的作用在于提供给用户彼此交流的空间,这种交流的方式浏览帖子和发表帖子
14、以及回帖。因此对于帖子的管理是BBS系统的一个核心功能,发表帖子的权利可以只对特定的人群。互联网上的优质资源很多,我们每天都会接触到很多不同的优质资源,比如实用的网站,有用的资讯等等,大部分网站是利用PHP语言编写1。BBS是Bulletin board system的缩写,中文含义是电子公告板。它是一种交互性强,内容丰富而即使的Internet电子信息服务系统。用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。其界面一般是以文字为主,主要目的是为广大网友提供一个彼此交流的空间,其最大的优点是自由平等,快捷互动。BBS最早是用来公布股市价格等类信息的,当时BBS连文件传输的
15、功能都没有,而且只能在苹果计算机上运行。早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。近些年来,由于爱好者们的努力,BBS的功能得到了很大的扩充。而如今的BBS系统功能更丰富,允许用户之间分享工具软件,技术文档等资源。BBS论坛系统突破了地域和时间的限制,实现了全球性资源共享,有助于人们学习,工作,生活,同时提高了人们的交流信息、思想和解决问题的能力。如何设计、建立一个经济、实用、全面、高效、稳定的BBS系统,是每个开发BBS系统的程序员必须要考虑
16、的问题,一个成功的BBS系统可大大提高承载此论坛的网站点击率,使企业的用户加入到产品、服务等内容的讨论上来,起到收集反馈资料的作用,对企业战略的发展有很好的参考作用。1.2 国内外发展状况1.2.1 国内方面中国大陆最早的BBS站是北京长城站,由于限于互联网尚未开始普及的条件,当时用户访问量每天只有十几人。随着计算机及其外设的大幅度降价、互联网在国内的快速发展,BBS及Forum逐渐被认识,并以惊人的速度发展起来。大陆的BBS论坛在2000年达到一个发展顶峰,各种BBS站大量涌现,BBS论坛(续致信网上一页内容)功能不断改进,内容涉及领域几乎无所不包。此后,由于发展的无序和管理的不善,在网络泡
17、沫的冲击之下,很多BBS论坛迅速消亡。之后,国内BBS论坛进入调整和成熟时期,成为现实社会的缩影。在历次中国互联网络发展状况统计报告中,BBS论坛仍然是国内互联网最重要的应用之一。多数研究者认为,BBS论坛简单,易用,实用的特点日益突出,今后BBS论坛将向个性化和专业化的方向发展。1.2.2 国外方面社区论坛在国外最开始主要用于BBS成员之间的信息交流与网络通讯,那时还没有浏览器、搜索引擎,甚至没有个人网站。当时BBS主要有四项功能应用:发布新闻、发布交易信息、发布个人感想、互动式问答。目前在国外BBS的主要应用转移到论坛上,也就是现在为大多数人所接受的BBS概念。因此,互联网技术的发展,使得
18、BBS在西方国家的影响力正逐渐减小,以美国为例,绝大多数高校基本上没有开设BBS,少数BBS站的存在主要用于提出或解决问题,集中表现为技术类BBS,针对软件或商品的技术支持BBS等。相比于人气极旺的中文BBS,它们并不存在复杂的管理机制和舆论调控行为。在这些BBS上,注重的是发帖和回帖的就事论事,区别于中文BBS的人与人的交流。国外对BBS的直接研究很少,间接的研究主要集中在对网络社会、虚拟社区方面。如针对网络社会中的人际关系、行为方式、价值观念和社会结构等,对虚拟社区的自身特征及虚拟社区中的社会问题等进行广泛研究。著名的研究成果有曼纽尔卡期特的网络社会的崛起、霍华德莱茵戈德的虚拟社区、尼尔巴
19、雷特的数字化犯罪等。1.3 研究内容及目标本文主要先全面系统的分析BBS论坛管理系统的实际业务流程,然后进行模块化的设计,再然后针对实际业务中存在的难点问题提出了较好的解决方案,并对各系统功能进行了详细方案设计。根据本系统的特点,可以将其分为前台和后台两个部分,前台主要包括用户个人管理和论坛内容展示两个部分,而后台主要包括会员管理,分区管理,板块管理,文章管理和回帖管理五个部分2。预期目标,管理员和会员可以在后台添加分区及板块等,普通用户可以在前台发表及回帖,以及最后系统上线。通过BBS论坛的方式,使用者可以在论坛上发布各项通知,可以让用户,游客能够及时准确的了解想要了解的动态,同时通过交流平
20、台能够展示每一个用户的各种能力,发布个人对一些事物的看法,增强人与人之间,团体与团体之间,个人与团体之间的互动交流。 系统中的主要代码使用Sublime Text3编写,主要采用的语言是PHP。符合MVC架构3,本网站采用现在很流行的B/S开发模式,采用Yii框架进行开发,与MySQL数据库高性能组合,完全可以满足上述功能的需求,软件界面简易,流程合理,结构清晰,满足用户视觉使用习惯。易使用和维护等,将实施成本降到了最低。对软件使用与实施具重要意义。由于本系统采用PHP语言开发,代码编写符合在Linux下的编写要求。因此可以运行在任何环境下,包括:Windows、Linux和Unix等主流操作
21、系统。系统的设计以方便未来业务的扩展和系统扩充为目标,系统要求能够方便的升级,充分保护系统的投资。论坛系统的研究目标是前台对所有的数据进行展示,以及利用网络文本编辑器实现发帖和回帖。搜索功能利用斯芬克斯检索。后台分区、版块和文章的管理。和该系统要完成无限分类对分区和板块的改善。以及RBAC对权限进行分配4。第 2 章 相关技术综述本系统使用Zend Technologies公司开发的PHP语言集成开发环境Zend Studio。主要是使用基于MVC模式的YII框架进行开发。后台数据库是目前属于Oracle公司的Mysql数据库。利用Sqlyog数据库管理工具实现对数据库的管理和操作。系统前台文
22、章搜索功能是一个基于SQL的全文检索引擎Sphinx。Sphinx单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为毫秒级5。系统编辑文字运用了所见即所得的开源富文本编辑器UEditor,具有轻量、可定制、用户体验优秀等特点。2.1 Zend StudioZend Studio是Zend Technologies开发的PHP语言集成开发环境(IDE)。也支持HTML和js标签,但只对PHP语言提供调试支持。它包括了PHP所有必须的开发部件。通过一整套编辑、调试、分析、优化和数据库工具,Zend Studio 加速开发周期,并简化复杂的应用方案。Zend Studio支持PHP语法加
23、亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能6。Zend Studio可以在Linux、Windows、Mac OS X上运行。Zend Studio的强大之处,除了一般编辑器所具有的代码高亮,语法自动缩进,书签功能外,它内置的调试器更是无可挑剔,支持本地和远程(debug server)两种调试模式,支持诸如跟踪变量、单步运行、断点、堆栈信息、函数调用、查看实时输出等多种高级调试功能。通过完全的PHP5支持、编码分析器、编码组合功能、语法检索、项目管理器、编码编辑器、绘图调试器(
24、向导)。超强智能编码:具备新的和更优秀的分析和优化工具像PHP编码检测器,。PHP的标准记录工具-PHP文档记录器:非常容易记录PHP代码、程序应用和方案。FTP和SFTP组合简化配置,使开发者安全地从远程服务器灵活的上载和下载项目文件。2.2 Yii框架Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能7。通过一个简单的命令行
25、工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。 Yii 具有高度的可重用性和可扩展性,是纯粹的面向对象的。Yii中的一切都是独立的可被配置,可重用,可扩展的组件。更重要的是Yii有着越来越多的扩展库。这可能有助于大大减少开发时间。2.3 SphinxSphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Rub
26、y等,同时为MySQL也设计了一个存储引擎插件8。Sphinx单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 34分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。2.4 UEditorUEditor是一种轻量、可定制开源富文本编辑器,开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用。百度UEditor可以帮助不少网站开发者在开发富文本编辑器所遇到的难题,节约开发者因开发富文本编辑器所需要的大量时间。UEditor中所有的功能型
27、实现都是通过命令插件层中的命令和插件来完成的,并且各个命令和插件之间基本互不耦合使用者需要使用哪个功能就导入哪个功能对应的命令或者插件文件,完全不用考虑另外那些杂七杂八的JS文件。理论上来讲,所有的命令都是可以用插件来代替的,但是依然将两者分开的主要原因是命令都是一些静态的方法,无需随editor实例初始化,从而优化了编辑器的性能。而插件随编辑器的初始化而初始化,性能上会有少许的影响,但相比命令而言,插件能够完成更加复杂的功能。其中最主要的一个特点是在插件内部既可以为编辑器注册命令,也可以为编辑器绑定监听事件。这个特点使得为编辑器添加任何功能都可以在插件中独立完成。第 3 章 系统分析与设计具
28、体而又详细的系统分析与设计是很重要的环节,是详细设计成败的重要基础和必要条件。一个BBS论坛可以大致分为以下流程:用户登录进入论坛(一半为游客,有时候注册为会员),就某个话题展开讨论。通过发帖功能发布新的话题,通过回帖功能回复已有的话题,通过搜索功能查找已有的话题。管理员通过功能创建、编辑、删除论坛的版块,管理帖子。这样的流程决定了BBS论坛系统的需求与设计。3.1 系统分析论坛管理系统最重要的就是前台浏览论坛和后台管理论坛数据两部分,本系统对两部分的架构都做了详细的设计,前台主要包括用户个人管理和论坛内容展示两个部分,而后台主要包括会员管理,分区管理,板块管理,文章管理和回帖管理五个部分。从
29、硬件上讲,计算机硬件的速度现在已经不是问题,大容量高速度的硬盘十分普遍了,同时网络速度的提高,这些为系统的运行打下了坚实的基础。从软件的角度上讲,数据库技术也已经相当成熟,比如本系统所用处理能力很强的Mysql数据库,同时基于Yii框架进行开发,将试图、模型已经进行了分层,减少了耦合,提高了代码的重用性。3.2 系统运行环境本系统运行环境是WAMP,也就是采用B/S 结构,即大家熟知的客户机和服务器结构。Apache是最通用的网络服务器;Mysql是带有基于网络管理附加工具的关系数据库;PHP是流行的对象脚本语言,它包含了多数其它语言的优秀特征来使得它的网络开发更加有效9。开发者在Window
30、s操作系统下使用这些Linux环境里的工具称为使用WAMP。B/S一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互10。3.2.1 系统安全性用户登录密码采用MD5加密算法。保证用户在登录时更加的安全。密码同时也不易遗失。系统所有操作数据库采用PDO,PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它
31、提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO类能防止SQL注入,使网站系统更加健壮11。登录论坛系统时添加验证码功能,验证码一般是防止批量注册的,人眼看起来都费劲,何况是机器。像百度贴吧未登录发贴要输入验证码大概是防止大规模匿名回帖的发生目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。3.2.2 系统通用性本系统代码编写严格符合在Linux下要求,因此在Linux下也能正常运行,通常系统最后发布都要发布在Linux系统下12。3.3 功能设计结合目前互联网各大论坛核心业务的分析,制定BBS论坛管理系统建设方案。
32、经过详细的分析和研究,确定该系统在结构上基本上分为:论坛前台和论坛后台管理两部分。功能设计上本系统主要包括七大功能:个人用户管理功能、论坛内容展示功能、会员管理功能、分区管理功能、版块管理功能、文章管理功能和回帖管理功能。每个大的功能模块下又细分出具体的小的功能模块。个人用户管理功能:用户访问论坛首页进行登录,没有账号可以进行注册,然后进入论坛添加用户的详细信息,包括头像,邮箱等等,以及对所有表单数据的验证。论坛内容展示功能:(1)发帖和回帖功能:用户对自己感兴趣的板块可以发表文章或者进行回帖。该系统采用UE编辑器,使发表文章时有更加丰富的内容。(2)浏览帖子功能:在顶级分区下模块区可以查看对
33、应模块下的文章及回帖总数,及文章和回帖的最后发表时间。在文章详细页面可以查看每个用户的头像等详细信息。会员管理功能:管理员可以添加会员,对会员的个人信息进行管理,删除会员。会员也可以添加分区及板块分区管理功能:管理员可以添加分区,对分区进行操作。删除分区时,如果该分区下面有板块,则要先完成删除该分区下的板块。版块管理功能:管理员可以添加板块,对版块进行操作。删除板块时,如果该板块下有文章,则要先完成删除该板块下的文章。文章管理功能:管理员对前台用户发表的文章进行管理,对不符合论坛要求的相关内容进行删除。回帖管理功能:管理员对前台游客以及会员回帖进行管理,对不符合论坛要求的回复进行删除。BBS论
34、坛故管理系统个人用户管理功能分区 管理功能会员管理功能论坛内容展示功能版块管理功能回帖管理功能文章管理功能图3-2 概要设计功能模块图3.4 数据库设计数据库设计是项目开发中的系统设计中非常重要的一个关键环节,之所以强调数据库的重要性,是因为如果设计不好,在后来的系统维护、变更和功能扩充时,甚至在系统开发过程中,将会引起比较大的问题,会遇到非常大的困难,大量工作将会重新进行。下面介绍本系统中几个重要的表。用户信息表(bbs_user)主要是存储系统用户的相关信息以及使用权限,只用在这个表中存在的用户并且有一定权限才能登录到系统的后台业务界面,表中没有权限的用户只能查看本论坛系统的前台展示部分,
35、展示部分也可以登录的,论坛系统最重要的就是用户,所以用户基本信息表的设计十分重要,用户基本信息表的设计如表3-1所示。表3-1 用户信息表序号数据库字段 类型 存储内容1Id整型用户ID2Username字符串用户名3Password字符串 用户密码4Rtime整型注册时间5Rip整型注册IP6Isadmin枚举用户权限用户详细信息表(bbs_profile)存储每个用户的详细信息,包括用户的昵称、邮箱、头像等,用户详细信息表结构设计如表3-2所示。表3-2 用户详细信息表序号数据库字段 类型存储内容1Uid整型用户ID2Age整型年龄3Sex枚举性别4Tname文本用户昵称5Email文本邮
36、箱6Edu枚举学历7Signed文本个性签名8Face文本头像论坛分区表(bbs_part)存储的是论坛所有分区信息,字段主要包括分区ID和分区名称。用户详细信息表结构设计如表3-3所示。表3-3 论坛分区表序号数据库字段 类型存储内容1Id整型分区ID2Name文本分区名称论坛版块表(bbs_category)存储的是论坛所有分区下版块信息,字段主要包括版块ID和版块名称。论坛版块表结构设计如表3-4所示。表3-4 论坛版块表序号数据库字段 类型存储内容1Id整型分区ID2Name文本分区名称3Pid整型所属分区ID文章表(bbs_article)存储论坛所有文章信息,包括文章的标题、内容、
37、发布时间等,文章表结构设计如表3-5所示。表3-5 文章表序号数据库字段 类型存储内容1Id整型文章ID2Title文本文章标题3Content文本文章内容4Uid整型文章作者ID5Cid整型所属版块ID6Pubtime整型发布时间文章评论表(bbs_comment)存储论坛所有文章的评论信息,包括评论人、评论内容等,评论表结构设计如表3-6所示。表3-6 评论表序号数据库字段 类型存储内容1Id整型评论ID2Content文本评论内容3Uid整型发布人的ID4Aid整型所属文章5Pubtime整型 发布时间3.5关键问题讨论3.5.1数据库设计根据论坛系统的需求和功能,对数据库的设计进行了全
38、面分析,数据库选择用Mysql数据库,Mysql数据库中有Innodb,myisam等几种引擎,论坛系统多为插入操作,所以选择Innodb引擎13,在前后台的操作中,对经常操作的字段添加索引,比如在文章表中的作者ID和所属版块ID中添加普通索引。一个比较复杂的应用系统,其对应的数据库表往往以千计。若让数据库管理员看到对象名就了解这个数据库对象所起的作用,恐怕会比较困难。而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到所需要的数据库对象而头疼。为此,制定一个数据库对象的前缀BBS。数据库设计符合范式。为各表之间添加必要的关联外键。3.5.2访问量大时的解决方法当系统中用户特别多的时候,
39、每次都向数据库服务器中请求数据,这样的方案不利于网站以后的发展,对经常访问的页面进行文件缓存和内存缓存。内存缓存采用Memcache。缓存是在磁盘或者内存中临时存储数据的一块区域。使用缓存可以提高效率,尽量减少对数据库的压力,提高页面相应速度14。Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。3.5.3搜索功能论坛系统中一定有搜索功能,以前的搜索大多利用Sql语句实现,但是当系统用户特别多的时候,
40、频繁的进行数据库操作,会给数据库服务器带来很大的压力,本系统采用Sphinx全文检索实现系统的搜索功能15,Sphinx单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 34分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。第 4 章 系统功能详细实现本章详细介绍了如何开发BBS论坛管理系统,以及七大功能模块的功能描述和操作方法,并对各大功能模块的实现过程进行了详尽的阐述。4.1 个人用户管理功能本小节主要介绍的是在开发个人用户管理功能模块过程
41、中所遇到的问题,以及解决问题的方法,即实现方法。(1)问题描述没有注册成用户的可以进行注册,已经注册成功的管理自己的信息,其中头像在论坛中要显示三种大小的,其中小头像是在浏览页中显示,中等大小头像是在文章中显示,大头像可以在系统以后的完善中做插件修改头像使用。(2)实现方法前台修改用户个人信息界面如图4-1所示。图4-1 个人详细信息编辑界面不同大小头像需要编写产生缩略图的类,首先打开extension=php_gd2.dll扩展,重启apache服务器,其代码实现如下:class Zoomstatic function savePath($sPath,$toW,$toH,$savePath,
42、$prefix=s_)$i=imagecreatetruecolor($toW,$toH);$white=imagecolorallocate($i, 255, 255, 255);imagefill($i,0,0,$white);$arr=getimagesize($sPath);$sW=$arr0;$sH=$arr1;$sType=$arrmime;switch($sType)case image/jpeg:case image/pjpeg:$funName=jpeg;break;case image/gif:$funName=gif;break;case image/png:$funNa
43、me=png;break;default:return false;$trueFunName=imagecreatefrom.$funName;$s=$trueFunName($sPath);$biliW=$sW/$toW;$biliH=$sH/$toH;if($biliW=$biliH)$trueBili=$biliW;else$trueBili=$biliH;$trueW=$sW/$trueBili;$trueH=$sH/$trueBili;$toX=($toW-$trueW)/2;$toY=($toH-$trueH)/2;imagecopyresized($i,$s,$toX,$toY,
44、0,0,$trueW,$trueH,$sW,$sH);$fileArr=explode(/,$sPath);$oldName=end($fileArr);$newName=$prefix.$oldName;$saveFunName=image.$funName;return $saveFunName($i,$savePath./.$newName);4.2 论坛内容展示功能用户对自己感兴趣的板块可以发表文章或者进行回帖。该系统采用UE编辑器,使发表文章时有更加丰富的内容。在顶级分区下模块区可以查看对应模块下的文章及回帖总数,及文章和回帖的最后发表时间。在文章详细页面可以查看每个用户的头像等详细
45、信息。其实从系统开始运行开始,系统就会判断缓存中是否有该首页信息,如果有直接加载缓存。系统首页部分截图如图4-2所示。在系统首页中,有六大分区,每个分区下对应不同的版块,用户点击某分区下的版块可以查看该版块下有什么文章,例如点击后端开发中的PHP。系统界面如图4-3所示。用户点击该版块下的某个文章,可以查看文章内容及评论,也可以发表评论,以及在该版块下发表文章。例如点击文章的缓存原理文章,系统界面如图4-4所示。图 4-2 系统首页部分截图图4-3 系统登陆界面图4-4 浏览文章界面为提升用户体验,发帖采用了UEditor网络文本编辑器,用户发帖界面如图4-5所示。图4-5 发表文章界面4.3
46、 会员管理功能管理员可以添加会员,对会员的个人信息进行管理,删除会员。会员也可以添加分区及板块。4.3.1 添加会员功能本小节主要介绍的是会员管理中的添加会员功能,以及这些功能是调用的那部分函数。(1) 功能描述由于论坛管理系统一个管理员对整个系统的管理过于繁忙,所以添加一个会员同样有管理员的权限和管理员协同工作。添加会员界面如图4-6所示。图4-6 添加会员界面(2)程序实现Yii框架安装后,是以MVC模式开发的,下面的代码是Controller层的加添会员过程。首先实例化用户对象,指定场景为useradd,以便于编写规则,然后验证,如果是真,则插入数据库,最后恢复密码以及重复密码为空。public function actionAdd()$usermodel = new User();