五年前,2011年的2月3日,大年初一,莘祺网的今生从国外免费的三蛋空间开始(英文网站,当初很难申请的),那时候叫“为你守候 温馨家园”,真正第一次开始接触现在的这个论坛程序。
五年了,说点什么……
“之前发现过手机版的本月发帖数月初不更新的问题,这会影响到数据统计的准确性,所以比较关注。”(引用内容)震撼全世界的一段碑文,很多人后悔没有早看到!
会员数据表月发帖(monthpost)列存储着会员最后发帖月的发帖数,该列数据并不会在每月的第一天自动清零,而是只要会员发过帖,对应的数据就不为零——不管最后一次登录是在什么时候。当第一帖由电脑版发布时,会自动触发更新月发帖数为1,但如果第一帖由手机版发出,月发帖数会更新为原有数据的基础上加1——不管原有数据是上个月,还是N年前的某月。这是我最近一段时间的研究发现,但不确定事实是否的确如此。为了证实我的想法,特意做了测试。
会员ioxnma735最后一次登录是在2011年7月2日,数据表里月发帖数为2(应该是广告帖,被我删除了,实际上是没有帖子的),然后修改密码,用手机版回复了一个帖子,本月发帖数就变成3了,而不是1。
应该是上个月知道了可以把monthpost列数据更改为0的sql执行语句,这样,可以在月初(基本上就是1号了,而且越早越好)通过手动操作强制更新数据表。这当然算是一种解决方法,不过,太不方便,太不“高科技”了。
后台有计划任务,如果sql执行语句能够由一个任务文件自动执行那该多好啊!这是我的美好愿望。
任务文件有几个,但我对php的了解实在是几乎没有,那里面的代码根本就看不懂,什么时间判断,条件判断,又是什么查询,更新,删除什么的,想写一个任务文件出来,那不是难比登天吗?
前天看那几个文件,看来看去,发现了更新数据表的语句,而且monthpost=0也是更新语句,似乎可以接轨哦。那怎么能得到月初第一天的时间呢,又什么时候执行语句呢,时间怎么判断?真难过!后来终于突然想到,时间其实是可以不用考虑的,因为任务有执行时间,只要任务文件能写出来,设置任务的执行时间为1号的0点几分,1点什么的就可以的啊!于是开始测试具体用什么sql语句执行是正确无误的,这个倒不难,但文件怎么写呢?通过仔细观察,发现任务文件应该是一样的开头和结尾,那只要再加上执行语句的完整代码就可以了!
前天晚上第一行执行任务,应该是在晚上的9点20,不过时间到了,却没有结果,我本以为任务文件写得不对,那什么地方不对呢?又过了一会儿刷新论坛,竟然本月发帖数都成0了,成功了!执行时间比设定的时间有几分钟的延迟!太棒了!于是,操作数据表,修改本月发帖数,再次测试任务执行,成功!
于是,今天下午在莘祺网实际测试。
成功!终于解决了这个存在许久的大难题!
不过,下次任务的执行时间是在明天,所以今天没法进行第二次测试了,那就不测试了。重新修改任务的执行时间为每月1日的2点,这是真正的执行时间哦!3月1日早晨起来看结果吧!
最后是修改数据表,按上面的数据修改为你守候,zhangjingyu,燕子,ioxnma735的本月发帖数monthpost。这个是真实的帖子数哦!