繁体   English   中英

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

[英]Remember MYSQL query results for use in PHP page

我设置了一个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上运行我的网站,并且由于数据库中用户和事件的数量,该页面的加载时间(预期)很慢。 当前,每次您访问该页面时,都会再次请求所有这些数据,并且(至少就我所知)不涉及任何形式的缓存或记忆。

数据可能每天都在变化,这意味着如果要在页面上缓存页面,我希望它仅在那一天的剩余时间内保持缓存状态,因为第二天可能会有不同的结果。

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

我假设您使用MVC系统,则可能会这样完成:

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

请注意,一旦为当前日期生成页面,脚本就不应再次生成页面。

编辑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;
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM