Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

uchome1.5 统计计划任务有BUG

[复制链接]
蓝色经典 发表于 2008-9-8 01:59:00 | 显示全部楼层 |阅读模式
根据数据库查看,某人的空间访问只有1次,执行计划任务后,就变成累加了50多次,觉得很奇怪,
于是跟踪统计计划任务

if($logs['uid']) {
        $nums = renum($logs['uid']);
        foreach ($nums[0] as $num) {
                $_SGLOBAL['db']->query("UPDATE ".tname('space')." SET viewnum=viewnum+$num WHERE uid IN (".simplode($nums[1][$num]).")");
        }
}

看到这里,我就在想 foreach 是循环,那就看看这个查询执行了多少次,
首先打印出

$nums

  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => 1
  6.             [1] => 1
  7.             [2] => 1
  8.             [3] => 1
  9.             [4] => 1
  10.             [5] => 1
  11.             [6] => 1
  12.             [7] => 2
  13.             [8] => 3
  14.             [9] => 1
  15.             [10] => 2
  16.             [11] => 1
  17.             [12] => 2
  18.             [13] => 1
  19.             [14] => 1
  20.             [15] => 1
  21.             [16] => 5
  22.             [17] => 2
  23.             [18] => 1
  24.             [19] => 1
  25.             [20] => 1
  26.             [21] => 2
  27.             [22] => 1
  28.             [23] => 1
  29.             [24] => 1
  30.             [25] => 1
  31.             [26] => 1
  32.             [27] => 1
  33.             [28] => 1
  34.             [29] => 5
  35.             [30] => 1
  36.             [31] => 7
  37.             [32] => 1
  38.             [33] => 1
  39.             [34] => 1
  40.             [35] => 2
  41.             [36] => 1
  42.             [37] => 1
  43.             [38] => 1
  44.             [39] => 1
  45.             [40] => 1
  46.             [41] => 2
  47.             [42] => 1
  48.             [43] => 1
  49.             [44] => 1
  50.             [45] => 1
  51.             [46] => 1
  52.             [47] => 1
  53.             [48] => 1
  54.             [49] => 2
  55.             [50] => 1
  56.             [51] => 1
  57.             [52] => 1
  58.             [53] => 1
  59.             [54] => 1
  60.             [55] => 1
  61.             [56] => 1
  62.             [57] => 1
  63.             [58] => 1
  64.             [59] => 1
  65.             [60] => 1
  66.             [61] => 1
  67.             [62] => 1
  68.             [63] => 1
  69.             [64] => 1
  70.             [65] => 1
  71.         )

  72.     [1] => Array
  73.         (
  74.             [1] => Array
  75.                 (
  76.                     [0] => 177684
  77.                     [1] => 164225
  78.                     [2] => 425745
  79.                     [3] => 204823
  80.                     [4] => 214212
  81.                     [5] => 351259
  82.                     [6] => 400858
  83.                     [7] => 329479
  84.                     [8] => 287553
  85.                     [9] => 422913
  86.                     [10] => 370673
  87.                     [11] => 399438
  88.                     [12] => 19599
  89.                     [13] => 436436
  90.                     [14] => 205764
  91.                     [15] => 415081
  92.                     [16] => 365161
  93.                     [17] => 312458
  94.                     [18] => 14560
  95.                     [19] => 406692
  96.                     [20] => 198902
  97.                     [21] => 303885
  98.                     [22] => 87037
  99.                     [23] => 349020
  100.                     [24] => 9262
  101.                     [25] => 233952
  102.                     [26] => 476193
  103.                     [27] => 437781
  104.                     [28] => 159641
  105.                     [29] => 32577
  106.                     [30] => 2047
  107.                     [31] => 254439
  108.                     [32] => 227680
  109.                     [33] => 203299
  110.                     [34] => 461399
  111.                     [35] => 60057
  112.                     [36] => 58452
  113.                     [37] => 322831
  114.                     [38] => 80692
  115.                     [39] => 42577
  116.                     [40] => 240071
  117.                     [41] => 32040
  118.                     [42] => 464299
  119.                     [43] => 489076
  120.                     [44] => 297585
  121.                     [45] => 107276
  122.                     [46] => 27489
  123.                     [47] => 327854
  124.                     [48] => 79834
  125.                     [49] => 299964
  126.                     [50] => 2208
  127.                     [51] => 342119
  128.                     [52] => 330875
  129.                     [53] => 1057
  130.                 )

  131.             [2] => Array
  132.                 (
  133.                     [0] => 131634
  134.                     [1] => 329471
  135.                     [2] => 6639
  136.                     [3] => 1653
  137.                     [4] => 19634
  138.                     [5] => 194226
  139.                     [6] => 11481
  140.                     [7] => 102415
  141.                 )

  142.             [3] => Array
  143.                 (
  144.                     [0] => 101835
  145.                 )

  146.             [5] => Array
  147.                 (
  148.                     [0] => 11696
  149.                     [1] => 102890
  150.                 )

  151.             [7] => Array
  152.                 (
  153.                     [0] => 123389
  154.                 )

  155.         )

  156. )
复制代码
回头再来看foreach 语句把$nums[0]拿去循环,肯定是错的。$nums[0]的值是每一个用户的点击次数。
结果本来是增加效率的7次查询,反而运行了65次,而且还累加错误了。难怪用户的访问数是一翻翻的。。

没法子,先把这条计划任务停止,等待官方的解决方案。

[ 本帖最后由 蓝色经典 于 2008-9-8 02:00 编辑 ]
 楼主| 蓝色经典 发表于 2008-9-8 02:36:49 | 显示全部楼层
我试了一下,是否应该改成这样?

if($logs['uid']) {
        $nums = renum($logs['uid']);
        foreach ($nums[1] as $key=>$num) {
                $_SGLOBAL['db']->query("UPDATE ".tname('space')." SET viewnum=viewnum+$key WHERE uid IN (".simplode($num).")");

        }
}

同理,日志访问数,还有主题访问数都要修改。

[ 本帖最后由 蓝色经典 于 2008-9-8 02:48 编辑 ]
回复

使用道具 举报

andy888 发表于 2008-9-8 09:35:10 | 显示全部楼层
空间的文章访问数也是属于空间访问数的一部份,
回复

使用道具 举报

sup 发表于 2008-9-10 11:05:51 | 显示全部楼层
已经在RC2里面解决
回复

使用道具 举报

szdxsw 发表于 2008-9-10 11:07:16 | 显示全部楼层
高手,顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-1-25 08:27 , Processed in 0.027838 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表