[备忘]一个简单的数据文件缓存类(2 位领导批示)
- 2011-09-22
- 分类:PHP&MySql
- 作者:银子
- 609 位领导视察
生成缓存文件的方法为静态言法,使用方法非常简单,包含类文件后:
1 2 3 4 5 6 7 8 9 10 | /** * 生成文件缓存 * * @param string $filePath 缓存文件的保存路径 * @param string $arrayName 存放在缓存文件中的数组名称 * @param array $data 数据 * * @return boolean */ DataCache::writeCache($filePath, $arrayName, $data); |
文件缓存类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <?php class DataCache { /** * 数组转换 * * @param array $array * @param string $arrayName * @param array $level * * @return string */ private function arrayEval($array, $arrayName = '', $level = 0) { $space = str_repeat("\t", $level); if (empty($arrayName)) { $evaluate = "array\n$space(\n"; } else { $evaluate = "\${$arrayName} = array\n$space(\n"; } $space2 = str_repeat("\t", $level + 1); $comma = $space2; if (!empty($array)) { foreach ($array as $key => $val) { $key = is_string($key) ? '\'' . addcslashes($key, '\'\\') . '\'' : $key; $val = !is_array($val) && (!preg_match('/^\-?[1-9]\d*$/', $val) || strlen($val) > 12) ? '\'' . addcslashes($val, '\'\\') . '\'' : $val; if (is_array($val)) { $evaluate .= "$comma$key => " . arrayEval($val, '', $level + 1); } else { $evaluate .= "$comma$key => $val"; } $comma = ",\n$space2"; } } $evaluate .= "\n$space)"; // 最后才需要一个“;” if ($level == 0) { $evaluate .= ";"; } return $evaluate; } /** * 写入缓存 * * @param string $path * @param string $arrayName * @param array $data * * @return boolean */ public static function writeCache($path, $arrayName, $data) { if ($handle = fopen($path, 'w+')) { $data = self::arrayEval($data, $arrayName); $dataConvert = "<?php\n" . $data; flock($handle, LOCK_EX); $rs = fputs($handle, $dataConvert); flock($handle, LOCK_UN); fclose($handle); if ($rs !== false) { return true; } } return false; } } |
相关文章
NOTE:本博内容大部分为原创,转载请注明出处。
永久链接:http://www.zdyi.com/file-datacache/651


























呵呵,确实多余了..多谢.
你这个有点多余,建议看下var_export