就算是沉落地面的太阳,只要夜晚过了一定会再度升起,不管有什么痛苦或难过的事,跟今天截然不同的明天也一定会到来。 收藏本站
登陆 / 注册 搜索

阅读:2.3K   回复: 1

Discuz 附件下载次数一直不更新

原创 [复制链接]
小执念 古黑浩劫论坛大牛 2022-9-3 03:35 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
问题之一在后台设置:附件下载量延迟更新

Discuz 附件下载次数一直不更新 QQ截图20220903031621.jpg

开启之后会在缓存目录生成一个缓存文件 data/cache/forum_attachviews_1.log

👨‍🎨‏👗📮🤟



之后每次下载的时候,会判断当前时间秒数是否是 10 的整数倍,如果是,就把文件里面缓存的数据写入数据库,如果不是就一直不更新。相关代码在 文件:
  1. source/module/forum/forum_attachment.php
复制代码

Discuz 附件下载次数一直不更新 QQ截图20220903032145.jpg

🧒‌👓🩺🥰👂


那么有没有办法让他自己更新呢?

我们可以利用自带的计划任务,更新帖子浏览量的时候,顺便把附件浏览量也更新一下!

打开文件👵‎🩳🔑😀🤟
  1. source/include/cron/cron_todayviews_daily.php
复制代码

Discuz 附件下载次数一直不更新 QQ截图20220903032810.jpg

这个文件是后台计划任务里面的 更新每日查看数,每天凌晨3点,每隔5分钟运行一次。
🧑‍💻‌👓💊🥰🤳
在文件末尾加入以下代码:
全屏查看
  1. $_G['forum_logfile'] = './data/cache/forum_attachviews_'.intval(getglobal('config/server/id')).'.log';
  2. attachment_updateviews($_G['forum_logfile']);

  3. function attachment_updateviews($logfile) {👨‍🎨‏👗💊🤮🙏
  4. $viewlog = $viewarray = array();
  5. $newlog = DISCUZ_ROOT.$logfile.random(6);
  6. if(@rename(DISCUZ_ROOT.$logfile, $newlog)) {
  7. $viewlog = file($newlog);
  8. unlink($newlog);
    🦴🚘🍪🆘🐻‎
  9. if(is_array($viewlog) && !empty($viewlog)) {
  10. $viewlog = array_count_values($viewlog);
  11. foreach($viewlog as $id => $views) {
  12. if($id > 0) {
  13. $viewarray[$views][] = intval($id);👨‍🎨‌🪗😡✋
  14. }
  15. }
  16. foreach($viewarray as $views => $ids) {
  17. C::t('forum_attachment')->update_download($ids, $views);
  18. }
    👍🏦🍓🈳🕊‏
  19. }
  20. }
  21. }
复制代码

Discuz 附件下载次数一直不更新 QQ截图20220903033131.jpg
代码需要 php 函数 rename,重命名的功能,确保你php没有禁止掉这个函数,才能正常运行。如果你因为安全优化禁止了这个函数,需要修改一下上面的代码。
🦷⛪🍍📳🐥‎
上一篇
下一篇
帖子热度 2328 ℃

蓬莱山天生 「初入古黑」 2022-9-3 03:35 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

前排支持下
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表