php实现浏览次数
实现 PHP 浏览次数功能
数据库记录方式
使用数据库记录文章的浏览次数是最可靠的方法。创建一个包含文章ID和浏览次数的表,每次访问时更新该字段。
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 获取文章ID
$article_id = $_GET['id'];
// 更新浏览次数
$sql = "UPDATE articles SET views = views + 1 WHERE id = $article_id";
$conn->query($sql);
// 获取当前浏览次数
$result = $conn->query("SELECT views FROM articles WHERE id = $article_id");
$row = $result->fetch_assoc();
echo "浏览次数: " . $row['views'];
文件存储方式
对于小型网站或不需要持久化存储的情况,可以使用文件来记录浏览次数。

$article_id = $_GET['id'];
$file = "views/{$article_id}.txt";
// 如果文件不存在则创建
if (!file_exists($file)) {
file_put_contents($file, '0');
}
// 读取并更新浏览次数
$views = (int)file_get_contents($file);
$views++;
file_put_contents($file, $views);
echo "浏览次数: " . $views;
Cookie防止刷量
为了防止用户刷新页面导致浏览次数异常增加,可以使用Cookie来标记已访问。

session_start();
$article_id = $_GET['id'];
if (!isset($_SESSION['viewed_'.$article_id])) {
// 更新数据库或文件中的浏览次数
update_view_count($article_id);
// 标记为已访问
$_SESSION['viewed_'.$article_id] = true;
}
function update_view_count($id) {
// 实现更新逻辑
}
Redis高效计数
对于高流量网站,使用Redis可以显著提高性能。
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$article_id = $_GET['id'];
$key = "article:views:{$article_id}";
// 增加浏览次数
$views = $redis->incr($key);
echo "浏览次数: " . $views;
综合方案
结合数据库持久化和Redis高性能的方案:
// 使用Redis处理实时计数
$redis->incr($key);
// 定时或定量将Redis数据同步到数据库
if ($views % 10 == 0) {
$sql = "UPDATE articles SET views = $views WHERE id = $article_id";
$conn->query($sql);
}
每种方法都有其适用场景,数据库方式适合大多数中小型网站,文件方式适合简单应用,Redis适合高并发场景,综合方案则能兼顾性能和持久化需求。






