动网新闻的库结构就是这样的
有这么几个字段
monthhits,weekhits,dayhits那是怎么实现的呢。
不要说用sql server的作业。动网新闻就没有用作业。

解决方案 »

  1.   

    把文章每次点击的信息(文章ID、IP、时间)记录下来不就行了吗?
      

  2.   

    文章的表是
    article,这个表的字段包括monthhits,weekhits,dayhits如果靠纪录就不能实时地在这三个字段中表示出这三个值。动网新闻就不是靠日志来做的,也不是靠sql server的作业定时清0来做的。请问怎么做。就这个问题就值100分。
      

  3.   

    添加一个时间型的列hitstime,默认值是添加文章时的时间
    点击时:
    先判断hitstime是不是和当前时间是同一天!
     是,则在当前dayhits基础上加1;不是则更新为1。
    再判断hitstime是不是和当前时间是同一周!//这个判断要复杂一点,可以单独做个方法,传hitstime和当前时间去,返回true/false
     是,则在当前weekhits基础上加1;不是则更新为1。
    再判断hitstime是不是和当前时间是同一月!
     是,则在当前monthhits基础上加1;不是则更新为1。
      

  4.   

    楼上说的两种方法都可以,前者比较适合于你时候还需要多点击相关的数据进行数据挖掘的,例如同时记录Referer和详细时间等属性,分析有多少点击来自哪里(例如哪个搜索引擎)和用户访问时间段等。后者的话能够用最简单最节省的方式来满足显示点击率的需求,动网好像也是这样做的吧(动网的作者好像比较喜欢这种类型的做法),但是对于各种意外情况(例如服务器时间意外变动)的抗性较低,它要求服务器时间是很理想的一天一天向后走。
      

  5.   

    to:
    dingsongtao(一翁傾塵『舍得』) 
    我就是这么做的。但是如果有一篇文章一年没有人点击,他的月点击数和日点击数,周点击数都还是以前的值而不是0,你想到过吗。
      

  6.   

    要解决长年没人点击的东西点击率不归零很容易,要么就用系统服务来负责这个工作,或者ASP.NET那种内建Thread来模仿系统服务的方式。比较动网的解决方案就是设置一个全局变量记录今天日期,每个Request都检查当前时间是否和这个变量一致,如果不一致就是跨入了新的一天,那就所有按天计算的变量都要重置归零。
      

  7.   

    to:
    u2006222() 如果只是要让用户看到的话,
    只要用户一点击,数据就自动更新了!那用户看到的就是最新的点击率了!
    没点击就是原来的数据!如果要进行统计或汇总,就需要用程序来更新一次了!
    毕竟LZ是要用程序来实现数据操作,这就是WEB程序的局限性!
    要自动的话,就还是用SQL作业吧!