PHP缓存sql结果

标签 php mysql

<分区>

我有一些从数据库中获取数据的 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"));
?>

最佳答案

一个非常简单的、无数据库的缓存机制:

$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;
}

(显然,您应该将 [...] 替换为保存数据的变量)

关于PHP缓存sql结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806537/

相关文章:

javascript - 表单提交问题之前的 Jquery ajax 验证

php - Mysql INSERT 在 PHP 中不起作用

php - CakePHP 迁移脚本不更新表模型

php - 使用 css 对网站样式进行精细控制

php - 在另一个字符串中的某个单词之前插入字符串

php - MYSQL IN 语句语法不起作用

php - PayPal Express Checkout 始终显示用户 "This transaction has expired."页面,但没有 API 错误

php - 用户评论 : Implementation of Comments - What technologies to use?

php - mysql 不更新 php 表单

mysql - SQL INNER JOIN 和 COUNT