因为去掉了计划任务功能后(据说有些情况执行不成功)。我就在想怎么智能更新论坛每日新贴,毕竟我不可能每天去更新。所以想到在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'");
}