【问题标题】:Remember MYSQL query results for use in PHP page记住 MYSQL 查询结果以便在 PHP 页面中使用
【发布时间】:2014-11-13 15:07:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: php mysql caching cookies raspberry-pi


    【解决方案1】:

    我假设你使用 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;
    ?>
    

    【讨论】:

    • 我了解 MVC 的概念,但是我不确定我如何或是否将它们应用到我的系统中,页面只是作为 PHP 页面本身访问,然后 HTML 被动态写入PHP 文件。是否可以在单个 PHP 文件中执行您所说的操作?
    • 谢谢!这听起来像是一个完美的解决方案:D
    • 出于好奇,如果创建和检查的文件只包含 HTML,它是否需要是 PHP?
    • @Benermafield 创建并在此之后加载的文件可以是任何东西......甚至* .txt......为什么?因为基本上是 PHP 打印出文件内容..
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2011-06-14
    • 2022-01-25
    • 1970-01-01
    • 2011-07-13
    • 2017-08-29
    • 2013-10-05
    • 1970-01-01
    相关资源
    最近更新 更多