在PHP中,實現數據庫搜索和緩存的方法有很多。這里,我將向您介紹一個簡單的示例,使用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
);
安裝PHP的MySQL擴展(如mysqli
或PDO
)和Memcached擴展。
創建一個名為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;
?>
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緩存中,以便在后續請求中快速獲取。