+ -
当前位置:首页 → 问答吧 → 将数组写入缓存~~~~~~~~~

将数组写入缓存~~~~~~~~~

时间:2008-05-03

来源:互联网

复制内容到剪贴板
代码:
<?php
/**
* 将一个数组写入文件
*
* $file       文件路径
* $array      需要写入文件的数组
* $arrayName  缓存文件中该数组的名称
*/
function arrayToFile($file,$array,$arrayName)
{
file_put_contents($file,'<?php $'.$arrayName.'='.arrayToStr($array).'; ?>');
}
/**
* 将一个数组还原为字符串
*
* $array  数组
*/
function arrayToStr($array)
{
if (is_string($array)) return '\''.str_replace('\'','\\\'',$array).'\'';
if (is_numeric($array)) return $array;
if (is_bool($array)) return $array ? 'true' : 'false';
if (is_null($array)) return '\'\'';
$arrayStr = '';
foreach ($array as $key => $value)
{
  $arrayStr .= ','.(is_string($key) ? '\''.$key.'\'' : $key).'=>'.arrayToStr($value);
}
return 'array('.substr($arrayStr,1).')';
}
?>


我发现了一个很奇怪的问题。
strtr函数有BUG。
strtr($str,'\'','\\\'');
我想把'符号替换成\',但是这样却得不出正确的结果。
用str_replace可以
[ 本帖最后由 fhjr999 于 2008-5-3 13:52 编辑 ]

作者: fhjr999   发布时间: 2008-05-03

作者: luzhou   发布时间: 2008-05-03

将数组序列化之后保存, 或者使用var_export() 函数 直接保存数组。会更加方便

作者: szy_session1987   发布时间: 2008-05-04

我不知道有这个函数,要知道了,就不用折腾的这么麻烦了。

学习了,谢谢。

作者: fhjr999   发布时间: 2008-05-04

序列化函数很好用的,事实上session就是序列化存储的,一般用到数据库查询缓存可以用到

作者: xinzf   发布时间: 2008-05-04

现在发现了一个问题,就是序列化函数写入的文件个头比较大,远远不如,我写的这个函数写入的文件体积小。

呵呵,看来我这个函数还是有优点的,虽然比较麻烦,但是却可以提高缓存的性能。

当然还有更简单的方案。
复制PHP内容到剪贴板
PHP代码:

<?php
$arrayStr = '<?php $array='.var_export($array).'; ?>';
$arrayStr = preg_replace('/\s+/',' ',$arrayStr);
?>

虽然在写缓存的时候会慢上一点,但是却可以大大提升缓存的加载时间,效果很理想,大约减小20%-30%的加载时间,你相信吗???不信你可以去侧四一下。

对于结构越复杂的数组,这样做的效果就越好,因为结构复杂的数组,每行前会有更多的空格,优化后可以减小更多大 体积。

[ 本帖最后由 fhjr999 于 2008-5-11 09:27 编辑 ]

作者: fhjr999   发布时间: 2008-05-11

热门下载

更多