当前位置: 首页 > news >正文

义乌网站备案南沙手机网站建设

义乌网站备案,南沙手机网站建设,国外网站怎么上,军博做网站公司有些时候#xff0c;我们不希望使用redis等第三方缓存#xff0c;使得系统依赖于其他服务。这时候#xff0c;文件缓存会是一个不错的选择。 我们需要文件缓存实现哪些功能#xff1a; 功能实现#xff1a;get、set、has、increment、decrement、delete、flush 能够在较短…有些时候我们不希望使用redis等第三方缓存使得系统依赖于其他服务。这时候文件缓存会是一个不错的选择。 我们需要文件缓存实现哪些功能 功能实现get、set、has、increment、decrement、delete、flush 能够在较短的时间内返回数据 支持key过期     为了避免一个文件内的数据过大造成读取文件的时候延迟较高我们采用一个key-value一个文件的方式实现存储结构。     为了支持key过期我们需要把expire数据写入到文件中所以需要对写入的数据进行序列化处理     为了能够快速的定位到文件路径我们采用hash算法一次计算出文件位置 ?php class FileCache {/*** 缓存目录* var*/private $cache_dir;/*** param $cache_dir* throws Exception*/public function __construct($cache_dir){$this-cache_dir $cache_dir;if (!is_dir($cache_dir)) {$make_dir_result mkdir($cache_dir, 0755, true);if ($make_dir_result false) throw new Exception(Cannot create the cache directory);}}/*** 根据key获取值会判断是否过期* param $key* return mixed*/public function get($key){$cache_data $this-getItem($key);if ($cache_data false || !is_array($cache_data)) return false;return $cache_data[data];}/*** 添加或覆盖一个key* param $key* param $value* param $expire* return mixed*/public function set($key, $value, $expire 0){return $this-setItem($key, $value, time(), $expire);}/*** 设置包含元数据的信息* param $key* param $value* param $time* param $expire* return bool*/private function setItem($key, $value, $time, $expire){$cache_file $this-createCacheFile($key);if ($cache_file false) return false;$cache_data array(data $value, time $time, expire $expire);$cache_data json_encode($cache_data);$put_result file_put_contents($cache_file, $cache_data);if ($put_result false) return false;return true;}/*** 创建缓存文件* param $key* return bool|string*/private function createCacheFile($key){$cache_file $this-path($key);if (!file_exists($cache_file)) {$directory dirname($cache_file);if (!is_dir($directory)) {$make_dir_result mkdir($directory, 0755, true);if ($make_dir_result false) return false;}$create_result touch($cache_file);if ($create_result false) return false;}return $cache_file;}/*** 判断Key是否存在* param $key* return mixed*/public function has($key){$value $this-get($key);if ($value false) return false;return true;}/*** 加法递增* param $key* param int $value* return mixed*/public function increment($key, $value 1){$item $this-getItem($key);if ($item false) {$set_result $this-set($key, $value);if ($set_result false) return false;return $value;}$check_expire $this-checkExpire($item);if ($check_expire false) return false;$item[data] $value;$result $this-setItem($key, $item[data], $item[time], $item[expire]);if ($result false) return false;return $item[data];}/*** 减法递增* param $key* param int $value* return mixed*/public function decrement($key, $value 1){$item $this-getItem($key);if ($item false) {$value 0 - $value;$set_result $this-set($key, $value);if ($set_result false) return false;return $value;}$check_expire $this-checkExpire($item);if ($check_expire false) return false;$item[data] - $value;$result $this-setItem($key, $item[data], $item[time], $item[expire]);if ($result false) return false;return $item[data];}/*** 删除一个key同事会删除缓存文件* param $key* return mixed*/public function delete($key){$cache_file $this-path($key);if (file_exists($cache_file)) {$unlink_result unlink($cache_file);if ($unlink_result false) return false;}return true;}/*** 清楚所有缓存* return mixed*/public function flush(){return $this-delTree($this-cache_dir);}/*** 递归删除目录* param $dir* return bool*/function delTree($dir){$files array_diff(scandir($dir), array(., ..));foreach ($files as $file) {(is_dir($dir/$file)) ? $this-delTree($dir/$file) : unlink($dir/$file);}return rmdir($dir);}/*** 根据key获取缓存文件路径** param string $key* return string*/protected function path($key){$parts array_slice(str_split($hash md5($key), 2), 0, 2);return $this-cache_dir . / . implode(/, $parts) . / . $hash;}/*** 获取含有元数据的信息* param $key* return bool|mixed|string*/protected function getItem($key){$cache_file $this-path($key);if (!file_exists($cache_file) || !is_readable($cache_file)) {return false;}$cache_data file_get_contents($cache_file);if (empty($cache_data)) return false;$cache_data json_decode($cache_data, true);if ($cache_data) {$check_expire $this-checkExpire($cache_data);if ($check_expire false) {$this-delete($key);return false;}}return $cache_data;}/*** 检查key是否过期* param $cache_data* return bool*/protected function checkExpire($cache_data){$time time();$is_expire intval($cache_data[expire]) ! 0 (intval($cache_data[time]) intval($cache_data[expire]) $time);if ($is_expire) return false;return true;} }  转载于:https://www.cnblogs.com/DoNetCShap/p/6230967.html
http://www.pierceye.com/news/940782/

相关文章:

  • 中国佛山手机网站建设十大互联网公司排名
  • 手把手指导做网站wordpress 熊掌号插件
  • 宁波网站建设方案报价湖州企业做网站
  • 优化 导航网站百度官网网站首页
  • 各大网站大全河北网站建设seo优化制作设计
  • 做照片的网站前端开发和后端开发
  • 谁能低价做网站支付接口泰州企业自助建站系统
  • 徐州 网站建设辽阳建设网站
  • PHP MySQL 网站开发实例单页应用网站
  • 制作网站的步骤关于企业网站建设的相关思考
  • 统计局网站建设情况ppt设计网站
  • 中石化第四建设公司 网站哪个软件可以看街道实景
  • 郑州做网站哪个平台好全国网站备案
  • 个人网站空间申请html5 网站开发 适配
  • 建站行业如何快速成第一单js制作网页游戏
  • 建立网站后怎么维护做网站自己租服务器还是网络公司
  • 建网站赚钱wordpress 公众号主题
  • 亚马逊网站建设的意义海西高端网站建设
  • 建设静态网站淘宝客怎么建设网站
  • wordpress网站外包浙江省建设厅新网站人员无法查询
  • 广州天与地网站建设石家庄快速建站公司
  • 汕头投资建设总公司网站专做PPP项目网站
  • 双语教学示范课程建设项目网站建设通网站上线
  • 电子商务网站域名注册要求南京电商设计
  • 网站左侧导航设计国内免费服务器地址
  • 怎样上网站dns解析不了图片墙网站源码
  • 东莞网站建设多少钱玩网页游戏的网站
  • 做网上竞猜网站合法吗珠海移动网站建设费用
  • 电视剧手机网站大全网页版微信二维码付款怎么弄
  • 亳州有做网站的吗一站式快速网站排名多少钱