我正在检索目录中的所有文件并缓存该值,以便我不必一次又一次地检索它
$memefiles = glob("usermemes/*.jpeg");
$total_pages = ceil(sizeof($memefiles)/$num_rec_per_page);
有没有办法缓存此结果,以便我不必一次又一次地执行这些功能。
答案 0 :(得分:1)
使用cookies。为了在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);
}
?>
希望这有助于你
答案 1 :(得分:1)
有许多方法可以优化或缓存,最好的方法取决于您尝试缓存的内容,数量和所需的刷新频率。例子是
在这种情况下,我认为前期计算可以满足您的需求。只需将您的代码放在一个脚本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 /命令行工具之间有所不同,如果您有现场服务器或使用专业的虚拟主机,则会有所不同。因此,搜索适合您特定情况的cron作业的stackoverflow。
假设您正在运行cron作业,将$total_pages
的值保存到文件中,那么您将在网页上检索您的值
$total_pages = file_get_contents('totalpages.dat');
这将通过保证提升所有需要提供$total_pages
值的网页的性能。与accepted answer相比,此解决方案具有一些显着优势: