当前位置:首页 > 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 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaS…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERV…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…