使用 PHP 缓存变量?

Caching a variable using PHP?

我正在检索目录中的所有文件并缓存值,这样我就不必一次又一次地检索它

$memefiles = glob("usermemes/*.jpeg"); 
$total_pages = ceil(sizeof($memefiles)/$num_rec_per_page);

有什么方法可以缓存这个结果,这样我就不必一次又一次地执行这些功能了。

使用 cookie。为了将数组存储在 cookie 中,您必须将其编码为 json,然后使用 json_decode() 对其进行解码。使用下面的代码

 <?php

    if(!isset($_COOKIE['calculation'])) {
    $memefiles = glob("usermemes/*.jpeg"); 
    $total_pages = ceil(sizeof($memefiles)/$num_rec_per_page);
    setcookie('calculation', json_encode($memefiles), time() + (8640000000 * 30), "/"); // Set the cookie for unlimited time
    }
    else{
    $memefiles = json_decode($_COOKIE['calculation'],true);
    }
    ?>

希望对您有所帮助

有很多优化或缓存的方法,最好的方法取决于您尝试缓存的内容、数量和所需的刷新频率。例子是

  • 将计算结果存储在会话、数据库或文件中 - 然后查找
  • 预先进行计算,然后在需要时查找它们
  • 存储您的页面(PHP 在文件中输出)并将存储的版本交付给用户
  • 使用缓存/HTTP 加速器,例如 Varnish

在这种情况下,我认为预先计算就可以满足您的需求。只需将您的代码放在一个脚本中,calculate.php,将计算出的 $total_pages 值保存到一个文件中:

<?
$memefiles = glob("usermemes/*.jpeg"); 
$total_pages = ceil(sizeof($memefiles)/$num_rec_per_page);
file_put_contents('totalpages.dat', $total_pages);
?>

现在设置一个 cron 作业,运行 calcaulate.php 每 1 分钟、5 分钟、每小时或您需要的时间。如果您 运行 在 windows 服务器上,则应改用 Task Scheduler 等效项。设置 cronjobs 非常简单,但它因系统和 GUI / 命令行工具而异,如果您有现场服务器或使用专业的虚拟主机,就会有所不同。因此,在 Whosebug 中搜索适合您特定情况的 cron 作业。

假设您有一个 cron 作业 运行,将 $total_pages 的值保存到文件中,然后您将通过

在网页上检索您的值
$total_pages = file_get_contents('totalpages.dat');

这将 保证 提高所有需要传递 $total_pages 值的页面的性能。与 相比,此解决方案具有一些显着优势:

  • 无论您有 1、10.000 还是 1.000.000 个用户/页面加载,该任务每次只运行一次。
  • 用户仍然可以收到近乎新鲜或几乎实时的数据。新鲜度由 cronjob 频率决定。