记住在PHP页面中使用的MYSQL查询结果

时间:2014-11-13 06:05:35

标签: php mysql caching cookies raspberry-pi

我设置了一个PHP页面,用于生成从MYSQL查询生成的大量数据。

使用此数据,它将根据当前系统中的用户数创建一定数量的表头(以html格式)。

foreach($usersFromMYSQL as $row)
{
    echo
    "
    <th>$someUserData
    <th>Col Y
    <th>Col Z
    ";
}    

然后它还将使用一定数量的行(以html格式)填充表格,具体取决于系统中发生的事件数量

foreach ($eventsFromMYSQL as $row)
{
    echo
    "
    <tr>
    ";

    foreach($usersfromMYSQL as $inner_row)
    {
        echo
        "
        <td>$someUserSpecificEventData1
        <td>$someUserSpecificEventData2
        <td>$someUserSpecificEventData3
        ";
    }
}

此代码大大简化,但格式与我的网站相同。

我的问题是我在Raspberry PI上运行我的网站,由于数据库中的用户和事件数量,此页面的加载时间(预计)很慢。目前,每次访问该页面时,都会再次请求所有这些数据,并且(据我所知)至少没有任何形式的缓存或记忆。

数据可能会日复一日地变化,这意味着如果页面在哪里被缓存,我希望它只在当天的剩余时间内保持缓存,因为第二天可能会有不同的结果。

我的问题是存在哪些解决方案可以防止每次访问页面时重新加载此数据,但确保每天至少重新加载一次?

1 个答案:

答案 0 :(得分:1)

我假设您使用的是MVC系统,那么可能会这样做:

  1. 在您的控制器中,检查当天的查看页面是否存在。
  2. 如果没有,则获取所有查询并生成所有HTML数据,然后使用唯一文件名(例如2014_01_01.php)将其另存为视图文件。之后,加载页面。
  3. 如果存在,请直接加载当天的视图页。
  4. 请注意,一旦为当前日期生成页面,脚本不应再次生成页面。

    编辑1

    如果您使用的是单个文件,

    <?php 
         $file_name = date('d_m_Y').".php";
         if(file_exists($file_name))
         {
              //load 
              $page_data = file_get_contents($file_name);
         }
         else
         {
              //generate page here
              //
              $page_data = "....... YOUR HTML PAGE DATA HERE ........ ";
              //save it
              file_put_contents(date('d_m_Y').".php");
         }
         //show page to user
         echo $page_data;
    ?>
    
相关问题