问题之一在后台设置:附件下载量延迟更新
开启之后会在缓存目录生成一个缓存文件
data/cache/forum_attachviews_1.log🧑🎤🪖⚔🤪🤳
之后每次下载的时候,会判断当前
时间秒数是否是 10 的整数倍,如果是,就把文件里面缓存的数据写入数据库,如果不是就一直不更新。相关代码在 文件:
- source/module/forum/forum_attachment.php
复制代码
🧠🏦🍪🆗🐻那么有没有办法让他自己更新呢?
我们可以利用自带的计划任务,更新帖子浏览量的时候,顺便把附件浏览量也更新一下!
打开文件
👨🦱👠⚔🤔👈
- source/include/cron/cron_todayviews_daily.php
复制代码
这个文件是后台计划任务里面的 更新每日查看数,每天凌晨3点,每隔5分钟运行一次。
🦴🗽🦞🆎🐢在文件末尾加入以下代码:
全屏查看- $_G['forum_logfile'] = './data/cache/forum_attachviews_'.intval(getglobal('config/server/id')).'.log';
- attachment_updateviews($_G['forum_logfile']);
- function attachment_updateviews($logfile) {
👠🗑💩👌
- $viewlog = $viewarray = array();
- $newlog = DISCUZ_ROOT.$logfile.random(6);
- if(@rename(DISCUZ_ROOT.$logfile, $newlog)) {
- $viewlog = file($newlog);
- unlink($newlog);
💅🎠🥩🆗🦜 - if(is_array($viewlog) && !empty($viewlog)) {
- $viewlog = array_count_values($viewlog);
- foreach($viewlog as $id => $views) {
- if($id > 0) {
- $viewarray[$views][] = intval($id);
👃🚗🥩🈷🐯 - }
- }
- foreach($viewarray as $views => $ids) {
- C::t('forum_attachment')->update_download($ids, $views);
- }
✋🚠🫖🅿🦟 - }
- }
- }
复制代码
代码需要 php 函数
rename,重命名的功能,确保你php没有禁止掉这个函数,才能正常运行。如果你因为安全优化禁止了这个函数,需要修改一下上面的代码。
👄⛴🍏🅿🐮