- 主题:各位给指点一下smthbbs-1.2的未读标记吧
以前用smthbbs-1.1.1的时候就是这样了,telnet方式下的未读标记
完全正常,网页方式下却基本不能用,比方说到一个版看了八篇帖
子,只有一两篇的未读标记被去掉了,刷新或者退出重新登录都
没改善,去掉未读标记的帖子是实际读过帖子的很小一部分。曾试
图读这方面的代码,发现涉及共享内存,没有读明白。
现在看看水木的网页方式,完全没有未读标记了。可能是太费资源
吧。我们不怕费资源,奔四的机子挂着三十个用户。
谁给指点一下?
--
FROM 202.207.211.*
莫非你的APACHE 运行用户不是 BBS?
于是httpd 没有权限修改文件?
把APACHE的 httpd.conf 中的
user和 group 用户都修改为 BBS 看看
【 在 laserboy@smth.org-SPAM.no (光速小子) 的大作中提到: 】
: 以前用smthbbs-1.1.1的时候就是这样了,telnet方式下的未读标记
: 完全正常,网页方式下却基本不能用,比方说到一个版看了八篇帖
: 子,只有一两篇的未读标记被去掉了,刷新或者退出重新登录都
: 没改善,去掉未读标记的帖子是实际读过帖子的很小一部分。曾试
: 图读这方面的代码,发现涉及共享内存,没有读明白。
: 现在看看水木的网页方式,完全没有未读标记了。可能是太费资源
: 吧。我们不怕费资源,奔四的机子挂着三十个用户。
: 谁给指点一下?
--
FROM 219.216.80.238
第一,USE_TMPFS要define成1,否则web处理未读标记完全不对;
第二,相关的PHP页面(包括文章列表和阅读)要去掉cache,否则即使已读记录改变了你也未必看得到,有时候强制刷新都不管用;
第三,最新的smth代码里面,WEB已经去掉了未读记录的显示,不过很容易加回去。
smth去掉这个,我觉得不能直接说是因为性能考虑,而是因为加了cache那个标记根本不准,所以干脆去掉...
【 在 laserboy (光速小子) 的大作中提到: 】
: 以前用smthbbs-1.1.1的时候就是这样了,telnet方式下的未读标记
: 完全正常,网页方式下却基本不能用,比方说到一个版看了八篇帖
: 子,只有一两篇的未读标记被去掉了,刷新或者退出重新登录都
: ...................
--
修改:atppp FROM 128.12.155.*
FROM 128.12.155.*
还有人问我我继续详细解释吧。我不保证我说的句句是真理因为我自己也没大量测试过。
希望有人用这个方案的话反馈一下。
【 在 atppp@smth.org-SPAM.no (Big Mouse) 的大作中提到: 】
: 第一,TMPFS要define成1,否则web处理未读标记完全不对;
很多站碰到WEB下未读记录出错的问题,比较严重的毛病是一旦登录过WEB,回到telnet下面发现未读记录完全不对了,这个似乎是TMPFS不是1造成的。总之我自己的站定义TMPFS为1之后从来没有发生过那种情况了。如果站点的TMPFS不是1,按照下面的操作
1) 改动site.h:
#define TMPFS 1
#define TMPFSROOT "cache"
2) 在 ~bbs/ 下面建立 cache 目录
3) 重新编译所有的 BBS 程序,停服务,安装,清共享内存,启动服务。
这样实际上就完成了。不过TMPFS的本意是用内存虚拟盘加速,如果你知道怎么用mount
tmpfs文件系统,就在 ~bbs/cache/ 那里 mount 一个 tmpfs 文件系统,至于多大,我也没经验,我自己站上一般在线10人,~bbs/cache/ 的使用大小是 100k 左右。不过上传文件临时是放在那个地方的,所以也不能太小...我设的是 32M。偏离主题太远先不说这个了。
定义TMPFS为1,未读记录就会临时存放在 ~bbs/cache/ 目录下,如果用户正常退出,未读记录会写回用户 ~bbs/home/ 目录,即使是踢人,好像也能写回。但是如果是系统非正常重新启动,可能 cache 目录下的还没来得及写回,而 tmpfs 文件系统如果碰到重启动自然死翘翘。如果你的站点一味追求用户利益而不在乎效率,可以不用 tmpfs 文件系统,这样未读记录虽然还是放在 ~bbs/cache/ 但是是实实在在的写在硬盘上,一般不会丢。
: 第二,相关的PHP页面(包括文章列表和阅读)要去掉cache,否则即使已读记录改变了你也未必看得到,有时候强制刷新都不管用;
这个会增加很多load,想好了要不要改 :p
改动 bbsdoc.php 和 bbscon.php 可能就差不多了。bbsdoc.php 我注释了这一段
/* if ($isnormalboard&&($default_dir_mode == $dir_modes["NORMAL"])) {
$dotdirname=BBS_HOME . "/boards/" . $brdarr["NAME"] . "/.DIR";
if (cache_header("public, must-revalidate",filemtime($dotdirname),10))
return;
} */
bbscon.php 里面,附件的cache还是可以保留的,但是帖子正文可以不cache,这样可以保证用户点开了那篇文章一定会设置该文章已读。方法是把相关的 if cache_header() 那句判断移动到 if ($attachpos!=0) { 分支里面就可以了。自己动手吧 :p
: 第三,最新的smth代码里面,WEB已经去掉了未读记录的显示,不过很容易加回去。
我站上的 bbsdoc.php 里面有个地方是这样的
echo $flags[0]; //不要未读标记 windinsn //加回去好不好? atppp
这个应该容易改吧...
另外同主题模式其实也有未读标记,不过那个我觉得已经不太有意义了...
--
哈哈,太好了,太感谢了,我去试试。
原来你们站的在线只有10人,还用你这样一个超强技术站务,典型的杀鸡用牛刀。
【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: 还有人问我我继续详细解释吧。我不保证我说的句句是真理因为我自己也没大量测试过。
: 希望有人用这个方案的话反馈一下。
: 很多站碰到WEB下未读记录出错的问题,比较严重的毛病是一旦登录过WEB,回到telnet下面发现未读记录完全不对了,这个似乎是TMPFS不是1造成的。总之我自己的站定义TMPFS为1之后从来没有发生过那种情况了。如果站点的TMPFS不是1,按照下面的操作
: ...................
--
FROM 202.207.211.*
atppp确实是一员干将呀。
今天试了他介绍的方法,未读标志正常了!
这里补充一点东西,tmpfs的用法在这里:
http://www.chinaunix.net/jh/4/243074.html
这篇网上很多地方都有
详细一点的在这里:
http://www-900.ibm.com/developerworks/cn/linux/filesystem/l-fs3/
bbsdoc.php和bbscon.php里的控制cache的语句没有注释掉,而是加入用户
是否guest的判断,因为我们站同时登录的web用户最多只有三十多个,而
guest按水木的计算法最多有992个,guest没有未读标记,还是俺以前的办法
对待guest吧。
if ($isnormalboard && ($default_dir_mode == $dir_modes["NORMAL"])) {
$dotdirname=BBS_HOME . "/boards/" . $brdarr["NAME"] . "/.DIR";
if (cache_header("public, must-revalidate",filemtime($dotdirname),10))
return;
}
中的第一句修改为:
if ($currentuser["userid"] == "guest" && $isnormalboard
&& ($default_dir_mode == $dir_modes["NORMAL"])) {
嘿嘿,照葫芦画瓢是俺的拿手好戏
【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: 还有人问我我继续详细解释吧。我不保证我说的句句是真理因为我自己也没大量测试过。
: 希望有人用这个方案的话反馈一下。
: 很多站碰到WEB下未读记录出错的问题,比较严重的毛病是一旦登录过WEB,回到telnet下面发现未读记录完全不对了,这个似乎是TMPFS不是1造成的。总之我自己的站定义TMPFS为1之后从来没有发生过那种情况了。如果站点的TMPFS不是1,按照下面的操作
: ...................
--
修改:laserboy FROM 202.207.211.*
FROM 202.207.211.*
谢谢atppp! 按你的方法现在清楚未读不乱了.
不过还有个小问题, 就是每次清楚未读之后, 显示出来的版面都是倒数第二页的,
而不是最后一页, 为什么呢?
【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: 还有人问我我继续详细解释吧。我不保证我说的句句是真理因为我自己也没大量测试过。
: 希望有人用这个方案的话反馈一下。
: 很多站碰到WEB下未读记录出错的问题,比较严重的毛病是一旦登录过WEB,回到telnet下面发现未读记录完全不对了,这个似乎是TMPFS不是1造成的。总之我自己的站定义TMPFS为1之后从来没有发生过那种情况了。如果站点的TMPFS不是1,按照下面的操作
: ...................
--
FROM 137.189.4.*
可能是cache的问题,小站可以考虑完全关掉cache...
搜索 作者 atppp 标题含 cache
【 在 qiqi (蓬莱仙子) 的大作中提到: 】
: 谢谢atppp! 按你的方法现在清楚未读不乱了.
: 不过还有个小问题, 就是每次清楚未读之后, 显示出来的版面都是倒数第二页的,
: 而不是最后一页, 为什么呢?
: ...................
--
FROM 128.12.181.30
查到了,谢谢!不过试着屏蔽了funcs.php里的cache_header,和bbsdoc.php, bbscon.php里的相关部分,还是不行,清除未读都做到了,就是清除未读返回的时候返回到了上一页。
而且还有一个问题,我把USE_TMPFS设成1之后,清未读好了,好像贴图又不行了。。。贴完图后,所有的贴图临时文件还都好好呆在_attach里。。。:( @@
【 在 atppp (Big Mouse) 的大作中提到: 】
: 可能是cache的问题,小站可以考虑完全关掉cache...
: 搜索 作者 atppp 标题含 cache
--
FROM 137.189.4.*
原来设了TMPFS之后,要在site.php里改一下附件的路径,指到 ~bbs/cache/home下。
在前面atppp和MrTiger的帖子里找到方法!谢谢!:)
【 在 qiqi (蓬莱仙子) 的大作中提到: 】
: 查到了,谢谢!不过试着屏蔽了funcs.php里的cache_header,和bbsdoc.php, bbscon.php里的相关部分,还是不行,清除未读都做到了,就是清除未读返回的时候返回到了上一页。
: 而且还有一个问题,我把USE_TMPFS设成1之后,清未读好了,好像贴图又不行了。。。贴完图后,所有的贴图临时文件还都好好呆在_attach里。。。:( @@
--
FROM 137.189.4.*