-
- class DataCache
- {
- /**
- * Array conversion
- *
- * @param array $array
- * @param string $arrayName
- * @param array $level
- *
- * @return string
- */
- private function arrayEval($array, $arrayName = '', $level = 0)
- {
- $space = str_repeat("t", $level);
-
- if (emptyempty($arrayName))
- {
- $evaluate = "arrayn$space(n";
- }
- else
- {
- $evaluate = "${$arrayName} = arrayn$space(n";
- }
-
- $space2 = str_repeat("t", $level + 1);
- $comma = $space2;
- if (!emptyempty($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;
- }
-
- /**
- * Write cache
- *
- * @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 = "
- flock($handle, LOCK_EX);
- $rs = fputs($handle, $dataConvert);
- flock($handle, LOCK_UN);
- fclose($handle);
- if ($rs !== false)
- {
- return true;
- }
- }
- return false;
- }
- }
- ?>
复制代码
调用方法:
-
- /**
- * Generate file cache
- *
- * @param string $filePath The save path of the cache file
- * @param string $arrayName The name of the array stored in the cache file
- * @param array $data Data
- *
- * @return boolean
- */
- DataCache::writeCache($filePath, $arrayName, $data);
复制代码
memcache is used to cache data. The class of this file cache:
|