function getReadNum() {
$result=mysql_query("SELECT read_num, WEEK(NOW())=WEEK(last_read_date) AS is_this_week FROM table WHERE XXXX");
$result=mysql_fetch_array($result);
if($result) {
if($result['is_this_week']) {
return $result['read_num'];
}else {
mysql_query("UPDATE table SET read_num=0, last_read_date=NOW() WHERE XXXX");
return 0;
}
}else {
//add something
}
}
瞎写的,应该差不多
或者写个每周一零点零分零秒执行的脚本
$result=mysql_query("SELECT read_num, WEEK(NOW())=WEEK(last_read_date) AS is_this_week FROM table WHERE XXXX");
$result=mysql_fetch_array($result);
if($result) {
if($result['is_this_week']) {
return $result['read_num'];
}else {
mysql_query("UPDATE table SET read_num=0, last_read_date=NOW() WHERE XXXX");
return 0;
}
}else {
//add something
}
}
瞎写的,应该差不多
或者写个每周一零点零分零秒执行的脚本
$id: 所要检查的文章的ID
$lastUpdateDate: 上次更新每周阅读量的时间 uinux stamp
*/
function cfmReadNum($id) {
global $lastUpdateDate;
$timeNow = time();
$pastTime = $timeNow-$lastUpdateDate;
if ($pastTime >= 604800 || date("w",$timeNow)==1){ //如果超过7天,或此时是星期一,则更新
mysql_query("UPDATE table SET week_read_num=0, last_update_date='$timeNow' WHERE id=$id");
return 1;
}else
return 0;
}通过上面的函数就可以完成功能,在没有增加查询.
可以再添加一句
if (cfmReadNum($id)) $artical['week_read_num']==0;
把浏览次数更新过的文章的本周浏览次数重新赋值.