仓酷云

标题: PHP网页设计在php中利用Memcache [打印本页]

作者: 飘灵儿    时间: 2015-1-16 22:11
标题: PHP网页设计在php中利用Memcache
到现在,对排版还是不很熟练,经常会排不好。1、安装memcache扩大起首我们经由过程phpinfo()函数检察一下我们以后的php情况是不是撑持memcache扩大,在服务器的根目次下新建一个文件info.php,在文件中写进<?phpphpinfo();然后在扫瞄器中输出http://localhost/info.php会见,然后查找是不是有memcache扩大,一样平常我们的服务器默许是没有安装memcache扩大的,以是仍是得我们本人来安装。我们先到网高低载php_memcache.dll文件,把文件拷贝到php扩大目次下(我的是php5/ext/),在扩大目次下加上这个文件还没完成,我们要在php的设置文件php.ini文件中到场extension=php_memcache.dll,php情况会主动找到php扩大目次将这个扩大加到php情况中,这个时分我们再重启apache,然后再来会见http://localhost/info.php,就能够看到memcache.png这就申明我们的memcache扩大安装好了!我们再检察php手册,发明memcache扩大的利用有两种体例,第一种是面向历程的利用体例,另有一种是面向工具的利用体例,而我们一样平常经常使用的是面向工具的体例。2、memcache的利用实例间接贴代码了!<?php//实例化memcache类$mem=newMemcache;//毗连memcache服务器(参数为服务器IP,端口),//pconnect--暗示延续毗连$mem->connect(localhost,11211);//addserver暗示增添memcache服务器,//多个memcache服务器能够完成散布式缓存//$mem->addsever(www.pccxin.com,11211);//$mem->addsever(www.frontu.net,11211);//向memcache服务器中增添元素//boolMemcache::add(string$key,//mixed$var[,int$flag[,int$expire]])//参数为键名,值(字符串数组工具),//利用MEMCACHE_COMPRESSED标志对数据举行紧缩(利用zlib),//保留工夫(单元秒)$mem->add(mystr,Thisismyfirstmemcachetest!,MEMCACHE_COMPRESSED,3600);//add不会反复增加,要想改动值可用replace(),大概set//$mem->add(mystr,Thisismyfirstmemcachetest!,MEMCACHE_COMPRESSED,3600);//向服务器中保留数据$mem->set(mystr,Thisismysecondmemcachetest!,MEMCACHE_COMPRESSED,3600);//从服务端删除一个元素//$mem->delete(mystr);//洗濯(删除)已存储的一切的元素//$mem->flush();//猎取memcache中的数据echo$mem->get(mystr).<br/>;//向memcache服务器中增添元素$mem->add(myarr,array(1=>aaa,2=>bb,3=>cc),MEMCACHE_COMPRESSED,3600);var_dump($mem->get(myarr));echo<br/>;classPerson{var$name=shawnking;var$sex=男;}//向memcache服务器中增添元素$mem->add(myobj,newPerson);var_dump($mem->get(myobj));echo<br/>;//猎取memcache的版本信息echoVersion:,$mem->getVersion();//失掉memcache的参数信息echo<pre>;print_r($mem->getStats());echo</pre>;//封闭到memcached服务真个毗连。这个函数不会封闭耐久化毗连,//耐久化毗连仅仅会在web服务器关机/重启时封闭。与之对应的,你也能够利用$mem->close();3、php在甚么中央利用memcachea、数据库中读出来的数据(select)利用memcache处置一般情形下我们会见一次页面php就会毗连一次数据库,就会到数据库中读取数据,假如会见量年夜的时分数据库就没法接受压力了,我们利用memcache的话,只需页面第一次被会见php就会把数据存到memcache服务器中,而且设定一个过时工夫,如许在过时工夫之前都不必要往数据库读取数据,这个能够年夜年夜提成网站功能(我们memcache的数据是存在内存中的,以是读取起来十分快)。上面我就贴出在数据库中利用memcache的示例代码:<?php//实例化一个memcache工具$mem=newMemcache;//毗连memcache服务器$mem->connect(localhost,11211);/***注重:*1、统一个项目安装两次,key要有前缀*$key=a_test;*$key=b_test;*2、用sql语句作为下标,如许可让不异sql语句的数据只需存一份到memcache*/$sql=SELECT*FROMtest;$key=substr(md5($sql),10,8);//从memcache服务器猎取数据$data=$mem->get($key);//判别memcache是不是无数据if(!$data){$mysqli=newmysqli(localhost,root,123456,testdb);$result=$mysqli->query($sql);$data=array();while($row=$result->fetch_assoc()){$data[]=$row;}$result->free();//开释内存$mysqli->close();//断开mysql毗连//向memcache服务器存储数据,还要设置生效工夫(单元为秒)$mem->set($key,$data,MEMCACHE_COMPRESSED,3600);}print_r($data);$mem->close();//封闭memcache毗连b、在会话把持session中利用将session信息写进到memcache服务器傍边<?php/***session保留到memcache类*/classMemSession{privatestatic$handler=null;privatestatic$lifetime=null;privatestatic$time=null;constNS=session_;/***初始化函数*/privatestaticfunctioninit($handler){self::$handler=$handler;self::$lifetime=ini_get(session.gc_maxlifetime);self::$time=time();}publicstaticfunctionstart(Memcache$memcache){self::init($memcache);session_set_save_handler(array(__CLASS__,open);array(__CLASS__,close);array(__CLASS__,read);array(__CLASS__,write);array(__CLASS__,destrory);array(__CLASS__,gc););session_start();}publicstaticfunctionopen($path,$name){returntrue;}publicstaticfunctionclose(){returntrue;}publicstaticfunctionread($PHPSESSID){$out=self::$handler->get(self::$session_key($PHPSESSID));if($out===false$out=null)return;return$out;}publicstaticfunctionwrite($PHPSESSID,$data){$method=$data?set:replace;returnself::$handler->$method(self::$session_key($PHPSESSID),$data,MEMCACHE_COMPRESSED,self::$lifetime);}publicstaticfunctiondestroy($PHPSESSID){returnsele::$handler->delete(self::$session_key($PHPSESSID));}publicstaticfunctiongc($lifetime){returntrue;}privatestaticsession_key($PHPSESSID){$session_key=self::NS.$PHPSESSID;return$session_key;}}$memcache=newMemcache;$memcache->connect(localhost,11211)ordie(couldnotconnect!);MemSession::start($memcache);4、memcache的平安(不让他人会见)1、内网毗连2、设置防火墙iptables-AINPUT-ptcp-dport11211-jDROP来回绝全体的会见,再设置能够会见的IPiptables-AINPUT-ptcp-s192.168.1.111-dport11211-jACCEPTiptables-AINPUT-pudp-s192.168.1.111-dpost11211-jACCEPT一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!
作者: 小女巫    时间: 2015-1-17 13:57
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 再见西城    时间: 2015-1-20 19:25
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 乐观    时间: 2015-1-29 17:05
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 深爱那片海    时间: 2015-1-29 17:05
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 海妖    时间: 2015-2-6 02:53
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 精灵巫婆    时间: 2015-2-15 06:40
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 不帅    时间: 2015-3-4 11:23
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 若天明    时间: 2015-3-11 18:51
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 活着的死人    时间: 2015-3-19 08:24
实践是检验自己会不会的真理。
作者: 简单生活    时间: 2015-3-27 17:08
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2