PHP缓存sql结果 [英] PHP caching sql results
本文介绍了PHP缓存sql结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些从数据库中获取数据的 mysql 查询,结果在 24 小时内不会改变,我想存储在缓存中,如何将结果缓存 24 小时并在到期后重新缓存它们?
I have some mysql queries that fetch data from database, the results will not change in 24 hours and i want to store in cache, how to cache results for 24 houre and recache them after expire houre?
<?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"));
?>
推荐答案
一个非常简单、无数据库的缓存机制:
A very simple, database-free caching mechanism:
$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;
}
(显然你应该用保存数据的变量替换 [...])
(Obviously you should replace [...] with your variables holding your data)
这篇关于PHP缓存sql结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文