推荐设备MORE

免费网站建设—【洛阳微信小

免费网站建设—【洛阳微信小

疑难问题

《一步一步跟我学PHP》第70讲:php程序实际操作

日期:2021-02-12
我要分享
《一步一步跟我学PHP》第70讲:php程序实际操作memcached详尽剖析

来源于: 百优資源网 创作者:管理方法员

能够实际操作memcached,根据PHP编程设计語言还可以实际操作memcached,给贵阳市企业网站建设朋友出示了十分便捷的企业网站建设服务。文中对这种內容开展详尽解读。

第70讲:php程序实际操作memcached详尽剖析
能够实际操作memcached,根据PHP编程设计語言还可以实际操作memcached,给贵阳市企业网站建设朋友出示了十分便捷的企业网站建设服务。文中对这种內容开展详尽解读。

一、memcached基本要素
  Memcached是以便加快 LiveJournal浏览速率而开发设计的,是一种缓存文件技术性,他能够把数据信息放进运行内存以提升浏览速率。运行内存中的表的构造是key和value的键值对,能够储放字串、标值、数字能量数组、目标、布尔运算、二进制数据信息、null等种类,但不可以储放資源种类。

二、php程序实际操作memcached服务流程
  流程1:把 php_memcache.dll 文档复制 php的ext 下。不一样版本号的php所应用的 php_memcache.dll 的版本号不一样。
  流程2:改动php.ini文档,载入 php_memcache.dll (该文档便是封裝了一堆涵数)。
extension=php_memcache.dll
  流程3:再次起动apache。
  流程4:写程序来进行curd实际操作。
三、PHP实际操作memcached留意事宜
  大家加上数据信息的情况下,bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] ),假如expire 设成0 表明,绝不到期。(要是memcache不看重新起动,就始终在mem中)。exprie 立即给的是秒数,则较大 30*3600*24(即最多時间是30天)。假如你期待维持時间超出30,能够用time()+天数*3600*24 就可以。谨记前边得加time()。
安全性编码:
mem1.php
?php
  //建立一个mem目标案例
 $mem=new Memcache;
 if(!$mem- connect("127.0.0.1",11211)){
 die('联接不成功!');
 }
 //提升
 //1.提升一个字串
/* if($mem- set('key1',"beijing",MEMCACHE_COMPRESSED,60)){
 echo '加上字串取得成功';
 }*/
 //2.加上标值
/* if($mem- set('key1',100,MEMCACHE_COMPRESSED,60)){
 
 echo '加上标值ok';
 }*/
 //3.加上数字能量数组
 //在加上数字能量数组是依据必须. 期待编码序列化放进。
 //serialize = unserialize, 假如依据必须,还可以json_encode = json_decode
 $arr=array("bj",'tj');
 if($mem- set('key1',$arr,MEMCACHE_COMPRESSED,time()+31*3600*24)){
 echo '加上数字能量数组ok99111';
 }
 //4.加上目标
/* class Dog{
 public $name;
 public $age;
 public function __construct($name,$age){
 $this- name=$name;
 $this- age=$age;
 }
 }
 $dog1=new Dog('小狗',50);
 if($mem- set('key1',$dog1,MEMCACHE_COMPRESSED,60)){
 echo '加上目标ok';
 }*/
 //5.加上null 布尔运算值
/* if($mem- set('key1',false,MEMCACHE_COMPRESSED,60)){
 echo '加上布尔运算ok';
 }*/
 //6. 資源种类放进.
/* $con=mysql_connect("127.0.0.1","root","root");
 if(!$con){
 die('联接数据信息库不成功');
 }
 var_dump($con);
 echo " br/
 if($mem- set('key1',$con,MEMCACHE_COMPRESSED,60)){
 echo '加上資源ok';
 }*/
 //查寻
 $val=$mem- get('key1');
 var_dump($val);
 //改动
 //可使用replace
 if($mem- replace("key11",'hello',MEMCACHE_COMPRESSED,60)){
 echo 'replace ok';
 }else{
 echo 'replace no ok';
 }
 //删掉
 echo " br/
 if($mem- delete('key14')){
 echo 'key14 删掉';
 }else{
 echo 'key14不会有';
 }
mem2.php编程设计源码:
?php
 //这一文档去实际操作memcached服务
  //建立一个mem目标案例
 $mem=new Memcache;
 if(!$mem- connect("127.0.0.1",11211)){
 die('联接不成功!');
 }
 //在此外文档中取下目标时,有一个留意的地区,针对php5.2这一版本号会提醒不正确,
 //对php5.plete 信息内容, 处理方式是申明类界定就可以。
 class Dog{
 public $name;
 public $age;
 public function __construct($name,$age){
 $this- name=$name;
 $this- age=$age;
 }
 }
 $dog=$mem- get('key1');
 var_dump($dog);

四、serilize 和 json_encode使用方法
  何时应用serilize 何时应用json_encode [ajax相互配合]
?php
/* class Dog{
 public $name;
 public $age;
 public function __construct($name,$age){
 $this- name=$name;
 $this- age=$age;
 }
 }
 $dog2=new Dog('小黄',40);
 //希望把这一目标储存到硬盘. - serilize
 file_put_contents("d:/my.log",serialize($dog2));
 echo 'save ok!';
 $dog=unserialize(file_get_contents("d:/my.log"));
 echo " br/
 echo $dog- name;
 $arr=array('city1'= "bj",'city'= "tj");
 file_put_contents("d:/my2.log",json_encode($arr));*/
 $host="127.0.0.1:1134";
  list ($ip, $port) = explode (":", $host);
  echo $ip."===".$port;
?
 

五、应用PHP源代码根据memcached-client实际操作memcached
  假如管理方法员不许大家去载入 memcache.dll 文档,大家能够立即根据源代码实际操作。
编码mem3.php
?php
 require_once 'memcached-client.php';
  $mc = new memcached(array(
  'servers' = array('127.0.0.1:11211'), //联接的memcacheip和端口号
  'debug'  = false, //是不是debug
  'compress_threshold' = 10240, /*较大缩小*/
  'persistant' = true)); /*是不是是长久联接*/
  $mc- set('key1', array('some', 'array'));
 // $mc- replace('key', 'some random string');
  $val = $mc- get('key1');
 var_dump($val);
 //改动
 $mc- replace('key1', "北京市");
 $val = $mc- get('key1');
 var_dump($val);
 //删掉
 $mc- delete('key1');
  $val = $mc- get('key1');
 echo "删掉后";
 var_dump($val);
?


六、 memcache的数据信息是放进到运行内存,而且在数据信息爆满的状况下,应用LRU 优化算法删掉。
七、memcached是根据遍布式的
  memcached虽然是“遍布式”缓存文件网络服务器,但网络服务器端并沒有遍布式作用。每个memcached不容易相互之间通讯以共享资源信息内容。那麼,如何开展遍布式呢?这彻底在于顾客端的完成。
如图所示:

手机软件设计方案,贵阳市企业网站建设

写段编码表明: mem4.php
?php
 //我的电脑上上面有2个memcahced服务.
$mem=new Memcache;
 $mem- addServer('127.0.0.1',11211);
 $mem- addServer('127.0.0.1',9999);
 $mem- addServer('127.0.0.1',9998);
 $mem- addServer('127.0.0.1',9997);
 $mem- addServer('127.0.0.1',9996);
 //这儿留意,把key1,放进到 11211端口号的mem,還是
 //9999 端口号的mem也不要大家操劳,有$mem目标自身维护保养.
 if($mem- set('key1','hello',MEMCACHE_COMPRESSED,300)){
 echo 'add ok!';
 }
 if($mem- set('key2','hello2',MEMCACHE_COMPRESSED,300)){
 echo 'add ok!';
 }
 if($mem- set('key3','hello3',MEMCACHE_COMPRESSED,300)){
 echo 'add ok!';
 }
mem5.php 取下.
  ?php
 //怎样从好几个mem中取下你的key?
 $mem=new Memcache;
 $mem- addServer('127.0.0.1',11211);
 $mem- addServer('127.0.0.1',9999);
 $val=$mem- get('key1');
 echo '程序中取下遍布的值='.$val;
留意事宜:
(1)mem服务的数据信息并不是同歩, 数据信息是遍布的。
(2)把甚么数据信息放进到哪一个memcached是由顾客端的mem目标决策。
(3)当实行addServer的情况下,其实不是马上去联接mem服务,只是根据测算,hash后才去决策联接哪一个mem服务,因而如果你很多添加网络服务器到联接池,沒有过剩花销。

八、怎样把session数据信息放进到memcached服务中
流程:改动php.ini的配备文档
;[sesson.save_handler 有user|files|memcache]
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
检测时重新启动apache
?php
 //传统式的编码
 session_start();
 $_SESSION['name']='新天龙八部3八部300';
 $_SESSION['city']='beijing';
 class Dog{
 public $name;
 }
 $dog1=new Dog;
 $dog1- name='abcde';
 $_SESSION['dog']=$dog1;
 //假如session数据信息入mem,那他一定是以session_id为
 //key值开展加上
 //取下
 $name=$_SESSION['name'];
 echo "name=$name";
 echo "sessionid=".session_id();
?

九、无php.ini改动管理权限时的解决
  假如管理方法员,不许大家改动 php.ini 文档,大家怎样解决session入memcached这一作用, 大家根据一个涵数能够去改动 php.ini 的配备。
编码:
?php

 ini_set("session.save_handler","memcache");
 ini_set("session.save_path","tcp://127.0.0.1:9999");
?
  同时你还可以根据 ini_set 去动态性的改动对php.ini 的其他设定。可是他不危害其他php网页页面,都不想去改动php.ini 文档自身, 只对本网页页面起效。

【强烈推荐阅读文章】
 手机软件设计方案和企业网站建设对策剖析
 第58讲:PHP smarty模版中內建涵数
 第59讲:PHP smarty模版中自定涵数
 第六0讲:PHP smarty配备文档、变量定义、自变量
 第六1讲:PHP smarty方式、高級特点
 第六2讲:PHP中zend framework基本原理剖析
 第六3讲:PHP中zend framework和数据信息库融合 
 第六4讲:PHP中zend framework案例——网络投票系统软件
 第六5讲:PHP中zend framework Zend_Db_Table详细说明
 第六6讲:PHP中zend framework 案例——买东西车
 第六7讲:php数据信息库程序编写圈套详细说明
 第六8讲:php中memcached缓存文件技术性的基本原理及安裝
 第六9讲:php中memcached缓存文件技术性的实际操作及安全性性
 第70讲:php程序实际操作memcached详尽剖析