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

网站建设制作文字教程/西安seo站内优化

网站建设制作文字教程,西安seo站内优化,四川房产信息网官网,专做外贸的网站有哪些资料2019独角兽企业重金招聘Python工程师标准>>> 在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方 …

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

   在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方
文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少坑的,如果拿来就用,对于cluster的memcached服务器而言,有些问题就需要指出来。

       下面将给出官方文档中的代码,并指出可能面临的问题,代码如下:

<?php
/*\*
* Function to get all memcache keys
* @author Manish Patel
* @Created:  28-May-2010
\*/
function getMemcacheKeys() {$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$items = $memcache->getExtendedStats('items');
foreach($allSlabs as $server => $slabs) {foreach($slabs AS $slabId => $slabMeta) {$cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);foreach($cdump AS $keys => $arrVal) {foreach($arrVal AS $k => $v){echo $k ."<br>";}}}
}//EO getMemcacheKeys() ?>

       在上述代码中,如果用于获取单个memcached服务器上的key,是不存在任何问题,但是获取连接池中的多个memcached所有key就存在问题,会发现打印出重复的key,问题就在于当使用getExtendedStats用去特定$slabID
上的信息时,返回的是连接池中所有的服务器上的特定$slabId 的存储的keys信息。当$server为"127.0.0.1:11214"且$slabId为0将变量$cdump的信息打印出如下所示:

array(2) {["127.0.0.1:11214"]=>array(1) {["course_schools__??¨é?¨"]=>array(2) {[0]=>string(1) "0" [1]=>string(10) "1380635175" }}["127.0.0.1:11216"]=>array(1) {["monitorMemcache"]=>array(2) {[0]=>string(2) "10" [1]=>string(10) "1385635702" }}
}

当$server为"127.0.0.1:11216"且$slabId为0将变量$cdump的信息打印出如下所示:

array(2) {["127.0.0.1:11214"]=>array(1) {["course_schools__??¨é?¨"]=>array(2) {[0]=>string(1) "0" [1]=>string(10) "1380635175" }}["127.0.0.1:11216"]=>array(1) {["monitorMemcache"]=>array(2) {[0]=>string(2) "10" [1]=>string(10) "1385635702" }}
}

也就是说,按照上述代码循环,会遭遇遍历不同memcached服务器时,对于某个$slabId,就有可能再次获取其他服务器此$slabId的信息(其他服务器也含有$slabId的值),因而在memcached是连接池的情景,会出现key重复的情况,使用上述代码,
为正确获取且不重复遍历连接池所有服务器的某特定$slabID信息,可以先统计出连接池所有memcached服务器中的不重复$slabId,再获取某$slabId信息,从而遍历出不重复的所有key以及value内容,关键代码片段如下:

39         $allSlabs = $memcache->getExtendedStats('slabs');        40         foreach($allSlabs as $server => $slabs)41         {42             foreach($slabs as $slabId => $slabInfo)43             {44 if(isset($allSlabIds[$slabId]))45                 {46 continue;47                 }4849                 $allSlabIds[$slabId] = 1;50             }51         }5253 //再打印出key  
54         foreach($allSlabIds as $slabId => $counter)55         {56             $cdump = $memObj->getExtendedStats('cachedump',(int)$slabId);57             foreach($cdump AS $keys => $arrVal)-58             {59 if (!is_array($arrVal)) continue;60                 foreach($arrVal AS $k => $v)-61                 {62                     echo $k ."<br>";63                }64             }65         }

转载于:https://my.oschina.net/u/586648/blog/190825

http://www.jmfq.cn/news/5098771.html

相关文章:

  • 湛江网站开发公司/百度收录入口提交查询
  • 南昌网站网站建设/找客户资源的软件
  • 网站维护 推广/上海好的seo公司
  • 医院网站信息化有哪些建设规范/莆田seo
  • 如何做一家专门卖零食的网站/seo网站优化培训价格
  • wordpress 搜索结果页/网络优化公司哪家好
  • html5网站开发测试/建站公司哪个好
  • 济南网站建设知识/seo关键词选取工具
  • pc网站平台/必应搜索引擎
  • 免费ppt模板下载网盘/seo推广编辑
  • 哈尔滨道外区建设局官方网站/seo高级
  • 南汇整站seo十大排名/免费大数据查询
  • 做可视化的网站/中国营销网官网
  • 百度网站如何做运营/新闻最近的大事10件
  • 广州哪里有外贸网站/星巴克网络营销案例分析
  • 移动端网站开发/武汉好的seo优化网
  • 淮北网站制作/嘉兴seo计费管理
  • wordpress后台500/大地seo
  • 华为公司网站建设相关内容/百度关键词优化企业
  • 简述网站设计规划的步骤/seo 页面链接优化
  • 江苏恒健建设集团有限公司网站/网站建设介绍ppt
  • 东莞建筑公司/seo类目链接优化
  • 备案用的网站建设方案书/哪里有整站优化
  • 视频解析网站制作/怎么理解搜索引擎优化
  • 建设部网站 审查系统/百度手机浏览器下载
  • 新疆5g基站建设/单页应用seo如何解决
  • 如何做网站seo/seo搜索引擎优化报价
  • 简单模板网站制作时间/站长收录
  • 精品课程教学网站/网络营销的策略
  • 网站建设的方案费用/深圳 网站制作