麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
smarty中使用新的方法进行有选择的缓存,有一点问题,请各位帮忙,谢谢
悬赏分:20 - 2007年08月22日

想法是这样的,smarty中的insert里有一个assign属性,手册上的描述是---该属性指定一个变量保存待插入函数输出--个人觉得,这应该是将PHP中的变量让模版接收,变成模版变量. 那么,是不是可以用这个办法,结合register_block来进行有选择的缓存呢? 代码如下 Btest1.php <?php require "main2.php"; //载入smarty环境 $smarty->cache_lifetime = 10; //设置缓存时间 $smarty->caching = true; //设置缓存方式 $smarty->left_delimiter = "<{"; $smarty->right_delimiter = "}>"; $array[] = array("newsID"=>1, "newsTitle"=>"第1条新闻"); $array[] = array("newsID"=>2, "newsTitle"=>"第2条新闻"); $smarty->register_block('dynamic', 'smarty_block_dynamic', false); if(!$smarty->is_cached( 'Btest1.htm' )) { $smarty->assign("News", $array); } $smarty->display("Btest1.htm"); function insert_get_current_time() { $arrayx[] = array("newsID"=>0, "newsTitle"=>"第0条新闻"); return $arrayx; } function smarty_block_dynamic($param, $content, &$smarty) { return $content; } ?> Btest1.htm 这是一个例子 <{section name=loop loop=$News}> 新闻编号:<{$News[loop].newsID}>
新闻标题:<{$News[loop].newsTitle}>
<{sectionelse}> 对不起,没有任何新闻输入! <{/section}>


第一次测试<{insert name="get_current_time" assign=NewsT}>
Page created: <{ "0"|date_format:"%D %H:%M:%S" }> <{dynamic}> Now is: <{ "0"|date_format:"%D %H:%M:%S"}>
<{section name=loop3 loop=$NewsT}> 新闻编号:<{$NewsT[loop3].newsID}>
新闻标题:<{$NewsT[loop3].newsTitle}>
<{sectionelse}> 对不起,没有任何新闻输入! <{/section}>
<{/dynamic}>
运行结果很奇怪.大家可以看见,我设定了缓存的时间为10秒(为了方便测试).不停的刷新,发现有的时候显示是正确的,有的时候又不正确. 经观察,在缓存有效的时候,显示是正常的.当缓存失效,需要重新生成缓存的时候,就显示不正常了.个人觉得是模版变量里的$NewsT在重新生成缓存的时候没有取到值.但,再下一步就继续不了了. 烦请大家帮忙看一下,谢谢.

提问者:浪子快刀   08-22 10:10
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
3 + 77 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM