我有一些从数据库获取数据的mysql查询,结果在24小时内不会改变,我想存储在缓存中,如何缓存24小时结果并在过期后重新缓存它们?
<?php
$getTopics=$db->loadAssoc($db->setQuery("SELECT * , categories.title AS category_title,
status_topics.title as status_topic
FROM contents
JOIN categories ON categories.id = contents.category
JOIN status_topics ON status_topics.id = contents.status "));
$getCategories = $db->loadAssoc($db->setQuery("SELECT * FROM categories"));
$getTags = $db->loadAssoc($db->setQuery("SELECT * FROM status_topics"));
$getPages = $db->loadAssoc($db->setQuery("SELECT * FROM pages"));
$getSiteInformation = $db->loadRow($db->setQuery("SELECT * FROM settings JOIN categories"));
$getSubDomainInformation = $db->loadAssoc($db->setQuery("SELECT * FROM sub_domains"));
$getUserInformation = $db->loadAssoc($db->setQuery("SELECT * FROM users"));
?>
Run Code Online (Sandbox Code Playgroud)
一个非常简单的、无数据库的缓存机制:
$filename = 'cache.txt';
if (filemtime($filename) < time()-24*3600) { //older than a day
/*get your data*/
file_put_contents($filename, serialize(array($getCategories, $getTags, [...])); //your data in a serialized form
} else {
$data = unserialize(file_get_contents($filename));
list($getCategories, $getTags, [...]) = $data;
}
Run Code Online (Sandbox Code Playgroud)
(显然你应该用保存数据的变量替换 [...])