将数组写入缓存~~~~~~~~~
时间:2008-05-03
来源:互联网
复制内容到剪贴板
/**
* 将一个数组写入文件
*
* $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 编辑 ] 代码:
<?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-05-03


作者: luzhou 发布时间: 2008-05-03
将数组序列化之后保存, 或者使用var_export() 函数 直接保存数组。会更加方便
作者: szy_session1987 发布时间: 2008-05-04
我不知道有这个函数,要知道了,就不用折腾的这么麻烦了。
学习了,谢谢。
学习了,谢谢。
作者: fhjr999 发布时间: 2008-05-04
序列化函数很好用的,事实上session就是序列化存储的,一般用到数据库查询缓存可以用到
作者: xinzf 发布时间: 2008-05-04
现在发现了一个问题,就是序列化函数写入的文件个头比较大,远远不如,我写的这个函数写入的文件体积小。
呵呵,看来我这个函数还是有优点的,虽然比较麻烦,但是却可以提高缓存的性能。
当然还有更简单的方案。
对于结构越复杂的数组,这样做的效果就越好,因为结构复杂的数组,每行前会有更多的空格,优化后可以减小更多大 体积。
[ 本帖最后由 fhjr999 于 2008-5-11 09:27 编辑 ]
呵呵,看来我这个函数还是有优点的,虽然比较麻烦,但是却可以提高缓存的性能。
当然还有更简单的方案。
复制PHP内容到剪贴板
<?php
$arrayStr = '<?php $array='.var_export($array).'; ?>';
$arrayStr = preg_replace('/\s+/',' ',$arrayStr);
?>
虽然在写缓存的时候会慢上一点,但是却可以大大提升缓存的加载时间,效果很理想,大约减小20%-30%的加载时间,你相信吗???不信你可以去侧四一下。PHP代码:
<?php
$arrayStr = '<?php $array='.var_export($array).'; ?>';
$arrayStr = preg_replace('/\s+/',' ',$arrayStr);
?>
对于结构越复杂的数组,这样做的效果就越好,因为结构复杂的数组,每行前会有更多的空格,优化后可以减小更多大 体积。
[ 本帖最后由 fhjr999 于 2008-5-11 09:27 编辑 ]
作者: fhjr999 发布时间: 2008-05-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28