PHP缓存sql结果 [英] PHP caching sql results

查看:32
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆