14 12
发新话题
打印

研究了一个晚上,终于找到智能更新论坛每日新帖的办法了

本主题由 Clwarm 于 2007-10-21 03:41 推荐主题

研究了一个晚上,终于找到智能更新论坛每日新帖的办法了

因为去掉了计划任务功能后(据说有些情况执行不成功)。我就在想怎么智能更新论坛每日新贴,毕竟我不可能每天去更新。所以想到在settings缓存里记录今天日期。然后判断是新的一天开始。

在更新settings缓存那里加入。
复制内容到剪贴板
代码:
$GLOBALS['curdate'] = $data['curdate'] = gmdate('Y-n-j', $timestamp + 3600 * $timeoffset);
然后在common.inc.php里面判断:
复制内容到剪贴板
代码:
if(($_DCACHE['settings']['curdate'] !== gmdate('Y-n-j', $timestamp + 3600 * $timeoffset)) {
        $db->query("UPDATE {$tablepre}forums SET todayposts='0'");
        updatecache('settings');
}
测试成功,结果才发现注册用户和某些情况会更新settings缓存。我的时间都被改了,common.inc.php里面的代码就无效了。达不到目的不罢休。继续寻找方法。反正我是不会去恢复cron功能的。结果想到我sablog里面用到的动态缓存的办法。还是把代码写了出来。。。虽然生成了一个文件,但是还是没有对数据表进行任何修改。还是比较方便的。。

下面就是最终代码。加在common.inc.php里的。。如果FD们有更好的想法。希望交流交流。
复制内容到剪贴板
代码:
//智能更新论坛每日发贴数 by angel
$curdatefile = './forumdata/curdatelog.php';
if((!@include($curdatefile)) || $curdate !== gmdate('Y-n-j', $timestamp + 3600 * $timeoffset)) {
        if($fp = @fopen($curdatefile, 'wb')) {
                @fwrite($fp, "<?php\r\nif(!defined('IN_DISCUZ')) exit('Access Denied');\r\n\$curdate='".gmdate('Y-n-j', $timestamp + 3600 * $timeoffset)."';\r\n?>");
                @fclose($fp);
                @chmod($curdatefile, 0777);
        } else {
                echo 'Can not write to cache files, please check directory ./forumdata/ .';
                exit;
        }
        $db->query("UPDATE {$tablepre}forums SET todayposts='0'");
}
本帖最近评分记录
  • Clwarm 威望 +2 原创内容 2006-12-25 18:51
  • Clwarm 金币 +4 原创内容 2006-12-25 18:51
http://www.sablog.net
http://www.sablog.net/bbs
http://www.sablog.net/blog

TOP

嘿嘿。得分了。。。。
http://www.sablog.net
http://www.sablog.net/bbs
http://www.sablog.net/blog

TOP

板凳

TOP

引用:
原帖由 4ngel 于 2006-12-25 07:16 PM 发表。
嘿嘿。得分了。。。。
经验与金币有何用途?呵

TOP

$timeoffset应该改为$_DCACHE['settings']['timeoffset']


本人乃老师的学生.
大家可以叫我学生.
My name is cnstudent.
I am cnteacher's student.
Winner never cheat.
Cheater never win.
欺骗的人永远不会成功。
成功的人永远不会欺骗。

TOP

有什么区别吗???
http://www.sablog.net
http://www.sablog.net/bbs
http://www.sablog.net/blog

TOP

引用:
原帖由 513889 于 2006-12-25 08:18 PM 发表。
[quote]原帖由 4ngel 于 2006-12-25 07:16 PM 发表。
嘿嘿。得分了。。。。
经验与金币有何用途?呵 [/quote]
具体没有用途。安慰人而已。所以我去掉这部分的功能。
http://www.sablog.net
http://www.sablog.net/bbs
http://www.sablog.net/blog

TOP

update todayposts的时候判断一下不是可以吗?

TOP

引用:
原帖由 4ngel 于 2006-12-25 10:17 PM 发表。
有什么区别吗???
如果会员设置了时区,那么使用的就不是论坛的时区了,可能会提前或提后更新.


本人乃老师的学生.
大家可以叫我学生.
My name is cnstudent.
I am cnteacher's student.
Winner never cheat.
Cheater never win.
欺骗的人永远不会成功。
成功的人永远不会欺骗。

TOP

不错....

TOP

 14 12
发新话题