智能缓存文件的头部是什么意思?

时间:2009-10-24 08:31:47

标签: caching smarty

132
a:4:{s:8:"template";a:1:{s:10:"index.html";b:1;}s:9:"timestamp";i:1256373019;s:7:"expires";i:1256373079;s:13:"cache_serials";a:0:{}}<body>
 php<br >
  java<br >
  c++<br >

</body>

有人可以解释这一部分:

132
    a:4:{s:8:"template";a:1:{s:10:"index.html";b:1;}s:9:"timestamp";i:1256373019;s:7:"expires";i:1256373079;s:13:"cache_serials";a:0:{}}

2 个答案:

答案 0 :(得分:1)

我对Smarty知之甚少,但看起来类似于Bencoding,它是通过首先指定长度来编码字符串和数组之类的东西。这避免了必须用“特殊字符”(例如引号)来划分这些内容,如果它们出现在真实字符串中,则需要“转义”。

  • 132是编码字符串的长度。
  • a:4:看起来正在引入一个包含4个项目的关联数组(字典)。
  • s:8:"template"似乎是一个长度为8的字符串,其值为“template”。在这种情况下,它是字典中第一项的关键。
  • 在这种情况下,该项的值是另一个只将键“index.html”映射到整数值1的字典。
  • ......我认为你可以解决剩下的问题了。

答案 1 :(得分:1)

它是PHP数组的序列化版本:

<?php
$serialized = 'a:4:{s:8:"template";a:1:{s:10:"index.html";b:1;}s:9:"timestamp";i:1256373019;s:7:"expires";i:1256373079;s:13:"cache_serials";a:0:{}}';
$unserialized = unserialize($serialized);
print_r($unserialized);

结果:

Array
(
[template] => Array
    (
        [index.html] => 1
    )

[timestamp] => 1256373019
[expires] => 1256373079
[cache_serials] => Array
    (
    )

)