当前位置:首页 > PHP

php 关注实现

2026-01-29 20:28:26PHP

PHP 实现关注功能

关注功能是社交网络或内容平台的核心功能之一,通常涉及用户之间的关联关系。以下是实现关注功能的常见方法:

数据库设计 创建用户表和关注关系表,用户表存储用户基本信息,关注关系表记录用户之间的关注关系。

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

CREATE TABLE follows (
    follower_id INT NOT NULL,
    following_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (follower_id, following_id),
    FOREIGN KEY (follower_id) REFERENCES users(id),
    FOREIGN KEY (following_id) REFERENCES users(id)
);

关注操作 处理用户发起关注请求的逻辑,检查是否已关注,避免重复关注。

function followUser($followerId, $followingId) {
    // 检查是否已关注
    $stmt = $pdo->prepare("SELECT 1 FROM follows WHERE follower_id = ? AND following_id = ?");
    $stmt->execute([$followerId, $followingId]);
    if ($stmt->fetch()) {
        return false; // 已关注
    }

    // 添加关注关系
    $stmt = $pdo->prepare("INSERT INTO follows (follower_id, following_id) VALUES (?, ?)");
    return $stmt->execute([$followerId, $followingId]);
}

取消关注 处理用户取消关注的逻辑,从关注关系表中删除对应记录。

function unfollowUser($followerId, $followingId) {
    $stmt = $pdo->prepare("DELETE FROM follows WHERE follower_id = ? AND following_id = ?");
    return $stmt->execute([$followerId, $followingId]);
}

获取关注列表 查询用户关注的其他用户列表。

function getFollowingList($userId) {
    $stmt = $pdo->prepare("
        SELECT u.id, u.username 
        FROM follows f 
        JOIN users u ON f.following_id = u.id 
        WHERE f.follower_id = ?
    ");
    $stmt->execute([$userId]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

获取粉丝列表 查询关注该用户的粉丝列表。

function getFollowerList($userId) {
    $stmt = $pdo->prepare("
        SELECT u.id, u.username 
        FROM follows f 
        JOIN users u ON f.follower_id = u.id 
        WHERE f.following_id = ?
    ");
    $stmt->execute([$userId]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

检查关注状态 判断当前用户是否已关注目标用户。

function isFollowing($followerId, $followingId) {
    $stmt = $pdo->prepare("SELECT 1 FROM follows WHERE follower_id = ? AND following_id = ?");
    $stmt->execute([$followerId, $followingId]);
    return (bool)$stmt->fetch();
}

性能优化建议

对于大型社交平台,关注功能可能需要考虑以下优化措施:

分页查询 关注列表和粉丝列表实现分页查询,避免一次性加载大量数据。

function getFollowingListPaginated($userId, $page = 1, $perPage = 10) {
    $offset = ($page - 1) * $perPage;
    $stmt = $pdo->prepare("
        SELECT u.id, u.username 
        FROM follows f 
        JOIN users u ON f.following_id = u.id 
        WHERE f.follower_id = ? 
        LIMIT ? OFFSET ?
    ");
    $stmt->execute([$userId, $perPage, $offset]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

缓存机制 对关注关系和数量进行缓存,减少数据库查询压力。

异步处理 将关注操作放入消息队列异步处理,提高响应速度。

php 关注实现

数据库索引优化 确保关注关系表的查询字段都有适当索引。

标签: php
分享给朋友:

相关文章

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE ord…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…