溫馨提示×

php數據庫搜索與緩存

PHP
小樊
95
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女