.html
我有一个 zend 应用程序,它在服务器上的公用文件夹中生成并存储一个文件。它是一种缓存机制,每天在 cron 作业上运行一次。
我希望 zend 视图cache.phtml
包含最新生成的.html
文件的内容。我怎样才能做到这一点。
假设'html
生成的文件称为report.html
.
谢谢
.html
我有一个 zend 应用程序,它在服务器上的公用文件夹中生成并存储一个文件。它是一种缓存机制,每天在 cron 作业上运行一次。
我希望 zend 视图cache.phtml
包含最新生成的.html
文件的内容。我怎样才能做到这一点。
假设'html
生成的文件称为report.html
.
谢谢
我会创建一个view helper
来获取缓存的内容。视图助手将包含一个简单的 PHP 方法来定位正确的文件、读取其内容并返回它:
class App_View_Helper_Cache extends
extends Zend_View_Helper_Abstract
{
public function cache()
{
$file = <however you figure out what the file is>;
return file_get_contents($file);
}
}
然后,在您看来,您只需回显视图助手:
<?= $this->cache() ?>
要在适当位置呈现平面 HTML 文件:
你不需要为此创建一个助手,你可以使用:
<?= $this->render('/path/to/report.html') ?>
但不要使用它,使用 Zend_Cache:
但是,您应该查看Zend_Cache,您可能会发现从模型中的 Zend Cache 加载变量而不是从数据库中提取变量与应用程序的其余部分更加一致。
注意:这些说明是针对 Zend Framework 1 的,Zend Framework 2 缓存具有相似的功能但不一样。
首先,创建缓存:
$frontendOptions = array(
'lifetime' => 60*60*24, // cache lifetime of 24 hours
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => './tmp/' // Directory where to put the cache files
);
$cache = Zend_Cache::factory('Core','File',$frontendOptions,$backendOptions);
然后执行此操作以在需要时获取值:
public function cacheAction(){
...
if(!$result = $cache->load('daily_report')){
$result = dailyFunction();
$cache->save($result, 'daily_report')
}
$this->view->result = $result;
}
这将dailyFunction()
每天运行一次(在lifetime
变量中定义)并$result
从缓存或函数返回。然后你可以在你的视图中正常使用它。
没有 cron 作业,没有静态 HTML 文件,以及缓存的所有优点。