naoki 发表于 2003-3-6 03:26:16

公社论坛提速方案

我以前用的跟公社同样的系统PHPNuke+PHPNuke自己整合的phpBB,会员多了以后整个网站变得非常慢,跟现在的公社差不多。phpBB是个不错的论坛,速度也不慢,不过被PHPNuke整合之后就变得效率很低:首先整合后的phpBB和PHPNuke共用相同的user表,使整个表显得很臃肿,其次两套系统原来使用不同的template系统,整合后phpBB要先调用PHPNuke的template然后再使用自己的template,更加影响了速度。

解决方案:
* 公社网页和论坛使用独立的程序,网页用PHPNuke,论坛用phpBB2.04,这会使论坛提速不少。
* 在PHPNuke和phpBB之间架一座桥,使得在它们中的任何一个有新会员注册自动在另外一方注册相同的账号,这样就实现了共享用户资源。
* 使用phpBB的Template cacheing功能,加快phpBB地执行效率。
   phpBB的Template cacheing的介绍
   http://cmfans.cpgl.net:8080//naoki/blog/index.php?p=5&tb=1#trackback

这是我的网站:
http://cmfans.cpgl.net
论坛:
http://cmfans.cpgl.net/phpbb
原来采用的是PHPNuke5.5+整合的phpBB2.0.1,速度比公社还慢。改成网站和论坛分开的以后速度大大提升。

naoki 发表于 2003-3-6 09:59:45

顶 :-D

kenix 发表于 2003-3-6 10:51:11

UP

conner 发表于 2003-3-6 12:29:32

试用了一下template cache, 的确快了。万分感谢!:-)

naoki 发表于 2003-3-6 12:58:40

试用了一下template cache, 的确快了。万分感谢!:-)
关键还是要分离phpNuke和phpBB,template cache治标不治本啊!

conner 发表于 2003-3-6 22:44:21

惊天大发现,原来port慢是因为一个bug! 这是因为每次phpbb2 port试图在nuke_users里面寻找用户的session信息,但实际没有这个表,造成mysql大量的slow query. 修正这个bug的方法如下:

在forum目录下打开includes/functions.php,寻找


      $sql = "SELECT u.*, s.*
                FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u
                WHERE s.session_id = '$session_id'
                AND s.session_ip = '$user_ip'";


将其替换为:



      $sql = "SELECT s.*
                FROM " . SESSIONS_TABLE . " s
                WHERE s.session_id = '$session_id'
                AND s.session_ip = '$user_ip'";


哈哈, :-D看是不是和独立的phpbb2一样快了?

conner 发表于 2003-3-6 23:32:42

同时发现viewtopics.php里面也有类似的bug. 同样替换就可以解决了。

naoki 发表于 2003-3-6 23:34:19

惊天大发现,原来port慢是因为一个bug! 这是因为每次phpbb2 port试图在nuke_users里面寻找用户的session信息,但实际没有这个表,造成mysql大量的slow query. 修正这个bug的方法如下:

在forum目录下打开includes/functions.php,寻找


      $sql = "SELECT u.*, s.*
                FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u
                WHERE s.session_id = '$session_id'
                AND s.session_ip = '$user_ip'";


将其替换为:



      $sql = "SELECT s.*
                FROM " . SESSIONS_TABLE . " s
                WHERE s.session_id = '$session_id'
                AND s.session_ip = '$user_ip'";


哈哈, :-D看是不是和独立的phpbb2一样快了?

增加了template cache和修正了bug,论坛确比昨天这个时候快了不少。不过,还是比我的那个单独的phpbb慢。我的那个可是运行在cpgl.net上的免费空间上的哦,考虑到这一点这里的速度其实还是比单独的phpbb论坛慢不少呢!

整合的phpbb和独立的phpbb程序基本上差不多,不同的只有输出,session,和users表上面。就是这个关键的users表的问题,使mysql效率降低,我记得phpnuke的作者说过6.0有一大缺陷是users表过于复杂,整个系统无法承受巨大的访问量,所以开始开发6.5版。

不过,不推荐以后6.5版发布之后公社升级到6.5版,因为phpnuke从头到尾都是狂打补丁+到处整合而来的玩意,所以再怎么优化,一开始的方向错了很难有好的发展。推荐使用与phpnuke功能类似的postnuke或者xoops这样更加高效稳定的CMS,还有一套比较复杂的OS的CMS typo3功能绝对强大,性能也相当出色,不过比较难以驾驭。

http://www.postnuke.com
http://www.xoops.org
http://www.typo3.com

conner 发表于 2003-3-6 23:40:32

主要问题是公社的网站系统和论坛是加了十多个mod和几十个修改的,如果重头来过,工作量很大。对此不知道有什么建议?

naoki 发表于 2003-3-6 23:45:28

建议是将phpnuke和phpbb的users表来个分离,恢复phpbb的session管理和用户管理,修改两边的用户管理部分使两边能协同工作.

呵呵,工作量看样子不小.

naoki 发表于 2003-3-6 23:49:41

还有一种方案,给单独的phpbb打好那几十个mod,然后再把整和论坛的数据port过去,最后做两边的接口.
相比前一种,不用深入研究phpbb的session管理,也许会轻松些吧!

Linux盲 发表于 2003-3-8 22:56:30

非常感谢naoki同志,特授“公社特别嘉宾”称号以表敬意。
页: [1]
查看完整版本: 公社论坛提速方案