我正在检索目录中的所有文件并缓存该值,这样我就不必一次又一次地检索它
$memefiles = glob("usermemes/*.jpeg");
$total_pages = ceil(sizeof($memefiles)/$num_rec_per_page);
有什么方法可以缓存这个结果,这样我就不必一次又一次地执行这些功能。
最佳答案
优化或缓存的方法有很多,最好的方法取决于您要缓存的内容、数量和所需的刷新频率。例子是
- 将计算结果存储在 session 、数据库或文件中 - 然后查找
- 预先计算,然后在需要时查找
- 存储您的页面(文件中的 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 作业,每 1 分钟、5 分钟、每小时或您的需要运行一次 calcaulate.php
。如果您在 Windows 服务器上运行,则应使用等效的任务计划程序。设置 cronjobs 非常简单,但它因系统和 GUI/命令行工具而异,如果您有现场服务器或使用专业的网络主机,则存在差异。因此,请在 stackoverflow 中搜索适合您特定情况的 cron 作业。
假设您正在运行一个 cron 作业,将 $total_pages
的值保存到文件中,然后您可以通过以下方式在网页上检索您的值
$total_pages = file_get_contents('totalpages.dat');
这将保证提高所有需要提供$total_pages
值的页面的性能。与accepted answer相比,该解决方案具有一些显着的优点:
- 无论您有 1、10.000 还是 1.000.000 个用户/页面加载量,该任务每次仅运行一次。
- 用户仍然可以接收近乎新鲜或近乎实时的数据。新鲜程度由 cronjob 频率决定。
关于php - 使用 PHP 缓存变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523488/