温馨提示×

php数据库搜索与缓存

PHP
小樊
81
2024-12-24 05:53:10
栏目: 编程语言

在PHP中,实现数据库搜索和缓存的方法有很多。这里,我将向您介绍一个简单的示例,使用MySQL数据库和Memcached缓存系统。

  1. 首先,确保已经安装了MySQL数据库和Memcached服务器。然后,创建一个名为users的表,用于存储用户信息:
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. 安装PHP的MySQL扩展(如mysqliPDO)和Memcached扩展。

  2. 创建一个名为config.php的文件,用于存储数据库连接信息和Memcached服务器的IP地址及端口:

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$memcached_host = "127.0.0.1";
$memcached_port = 11211;
?>
  1. 创建一个名为search.php的文件,用于处理搜索请求。在这个文件中,我们将连接到数据库并执行搜索查询。同时,我们将检查Memcached缓存中是否存在搜索结果。如果存在,我们将直接从缓存中获取结果;否则,我们将从数据库中查询结果并将其存储在缓存中:
<?php
require_once 'config.php';

// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查数据库连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 获取搜索关键词
$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : '';

// 初始化Memcached客户端
$memcached = new Memcached();
$memcached->addServer($memcached_host, $memcached_port);

// 生成缓存键
$cache_key = 'search_results_' . $keyword;

// 尝试从缓存中获取搜索结果
$results = $memcached->get($cache_key);

if (!$results) {
    // 如果缓存中没有结果,则从数据库中查询
    $sql = "SELECT * FROM users WHERE username LIKE ? OR email LIKE ?";
    $stmt = $conn->prepare($sql);
    $search_pattern = '%' . $keyword . '%';
    $stmt->bind_param('ss', $search_pattern, $search_pattern);
    $stmt->execute();
    $result = $stmt->get_result();

    // 将查询结果存储在数组中
    $results = array();
    while ($row = $result->fetch_assoc()) {
        $results[] = $row;
    }

    // 将搜索结果存储到Memcached缓存中,设置缓存有效期为1小时
    $memcached->set($cache_key, $results, 3600);
}

// 输出搜索结果
echo json_encode($results);
?>

现在,您可以通过访问search.php?keyword=your_keyword来执行搜索请求。搜索结果将从数据库中查询,并存储在Memcached缓存中,以便在后续请求中快速获取。

0