• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

一个比较蛋疼的php缓存类_php

php 搞代码 3年前 (2018-06-21) 93次浏览 已收录 0个评论
php缓存类
$oFC = new FileCache();
$sKey = 'ab_123';
$data = $oFC -> get($sKey);
if (is_null($data))
$oFC -> set($sKey, array('name' => 'ttt', 'datetime' => date('Y-m-d H:i:s')), 100000);

http://www.gaodaima.com/50933.html一个比较蛋疼的php缓存类_php

print_r($data);

 

  <?php final class FileCache {     /**      * * * 缓存目录 *      *       * @var string       */     private static $msCachePath = null;     /**      * * * 默认缓存失效时间(1小时) *      *       * @var int       */     const miEXPIRE = 3600;     /**      * * * 构造<br /> * self::$msCachePath 缓存目录为共享目录 *      *       * @param string $sCachePath       */     function __construct($sCachePath = './tmp/')     {         if (is_null(self :: $msCachePath))             self :: $msCachePath = $sCachePath;     }      /**      * * * 读取缓存<br /> * 返回: 缓存内容,字符串或数组;缓存为空或过期返回null *      *       * @param string $sKey 缓存键值(无需做md5()) *      * @return string  null *      * @access public       */     public function get($sKey)     {         if (empty($sKey))             return false;         $sFile = self :: getFileName($sKey);         if (!file_exists($sFile))             return null;         else         {             $handle = fopen($sFile, 'rb');              if (intval(fgets($handle)) > time())             {                  // 检查时间戳 { //未失效期,取出数据                 $sData = fread($handle, filesize($sFile));                 fclose($handle);                 return unserialize($sData);             }              else             {                  // 已经失效期                 fclose($handle);                 return null;             }          }      }      /**      * 写入缓存 * *      *       * @param string $sKey 缓存键值 *      * @param mixed $mVal 需要保存的对象 *      * @param int $iExpire 失效时间 *      * @return bool       * @access public       */     public function set($sKey, $mVal, $iExpire = null)     {         if (empty($sKey))             return false;         $sFile = self :: getFileName($sKey);         if (!file_exists(dirname($sFile)))             if (!self :: is_mkdir(dirname($sFile)))                 return false;             $aBuf = array();             $aBuf[] = time() + ((empty($iExpire)) ? self :: miEXPIRE : intval($iExpire));             $aBuf[] = serialize($mVal);             /**              * 写入文件操作              */             $handle = fopen($sFile, 'wb');             fwrite($handle, implode("/n", $aBuf));             fclose($handle);             return true;         }          /**          * * * 删除指定的缓存键值 *          *           * @param string $sKey 缓存键值          * @return bool           */          public function del($sKey)         {             if (empty($sKey))                 return false;             else             {                 @unlink (self :: getFileName($sKey));                 return true;             }          }          /**          * * * 获取缓存文件全路径<br /> * 返回: 缓存文件全路径<br /> * $sKey的值会被转换成md5(),并分解为3级目录进行访问 *          *           * @param string $sKey 缓存键 *          * @return string           * @access protected           */          private static function getFileName($sKey)         {             if (empty($sKey)) return false;             $key_md5 = md5($sKey);             /**              * $aFileName = array();              * $aFileName[] = rtrim(self :: $msCachePath, '/');              * $aFileName[] = $key_md5{0} . $key_md5{1};              * $aFileName[] = $key_md5{2} . $key_md5{3};              * $aFileName[] = $key_md5{4} . $key_md5{5};              * $aFileName[] = $key_md5;              */             return self :: $msCachePath . '/' . $key_md5;              // return implode('/', $aFileName);         }          /**          * * * 创建目录<br /> * *          *           * @param string $sDir           * @return bool           */         private static function is_mkdir($sDir = '')         {             if (empty($sDir))                 return false;             /**              * 如果无法创建缓存目录,让系统直接抛出错误提示              */             echo $sDir;             if (!mkdir($sDir, 0666))                 return false;             else                 return true;         }      }      

欢迎大家阅读《一个比较蛋疼的php缓存类_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址