20
2023
08

PHPMPS缓存信息点击量,避免频繁更新数据库的方法

第一步:在global.fun.php文件中自定义两个函数

//缓存点击量
function cache_hits($module, $itemid) {
	if(@$fp = fopen(PHPMPS_CACHE.'/hits-'.$module.'.php', 'a')) {
		flock($fp, LOCK_EX);
		fwrite($fp, $itemid.' ');
		flock($fp, LOCK_UN);
		fclose($fp);
	}
}
//更新点击量
function update_hits($module, $table) {
	global $db;
	$hits = trim(file_get(PHPMPS_CACHE.'/hits-'.$module.'.php'));
	file_put(PHPMPS_CACHE.'/hits-'.$module.'.php', ' ');
	file_put(PHPMPS_CACHE.'/hits-'.$module.'.dat', time());
	if($hits) {
		$tmp = array_count_values(explode(' ', $hits));
		$arr = array();
		foreach($tmp as $k=>$v) {
			$arr[$v] .= $k ? ','.$k : '';
		}
		$id = $module == 'info' ? 'id' : 'comid';
		foreach($arr as $k=>$v) {
			$db->query("UPDATE LOW_PRIORITY {$table} SET `click`=`click`+".$k." WHERE `$id` IN (0".$v.")", 'UNBUFFERED');
		}
	}
}

第二步:在common.php文件中添加下面代码

«1»