搜索
首页后端开发php教程[原创] 多memcached 和 mysql 主从 环境下PHP开发: 代码详解_PHP教程
[原创] 多memcached 和 mysql 主从 环境下PHP开发: 代码详解_PHP教程Jul 13, 2016 am 10:38 AM
memcachedmysqlphp一天代码原创开发最后环境详解

 4点了.今天是最后一天在这间公司.心情不是很好.

所以写下东西发泄下.         一般的大站通常做法是    拿着内存当数据库来用(memcached).     和很好的读  写分离  备份机制 (mysql 的主从)

在这样的环境下我们怎么进行PHP开发呢.  本人不太会讲话.所以还是帖代码吧.  

刚在linux  的 VIM  里写的一个  demo    调试通过.  也同时希望大家拍砖 ,  使用PHP5  写的. PHP4写出来怕大家说我落后了

$memcached = array(  //用memcached 的 多 进程模拟 多台memcached 服务器     cn     en   为  内存服务器名
     'cn'=>array('192.168.254.144',11211),
     'en'=>array('192.168.254.144',11212)
     );
$mysql    = array( // mysql 的主从 我的环境是 : xp 主    linux 从  mysql 5  php5
     'master'=>array('192.168.254.213','root','1','mydz'),
     'slave_1'=>array('192.168.254.144','root','1','mydz')  //可以灵活添加多台从服务器
     );
?>

服务器配置文件: 十分方便的 切换主从.  当主换了  从可以迅速切换为主.  支持 多从服务器   .

[php] 
class Memcached
{
private $mem;
public $pflag=''; // memcached pconnect tag
private function memConnect($serkey){
  require 'config.php';
  $server = $memcached;
  $this->mem = new Memcache;
  $link = !$this->pflag ? 'connect' : 'pconnect' ;
  $this->mem->$link($server[$serkey][0],$server[$serkey][1]) or $this->errordie('memcached connect error');

}

public function set($ser_key,$values,$flag='',$expire=''){
  $this->memConnect($this->tag($ser_key));
  if($this->mem->set($ser_key,$values,$flag,$expire)) return true;
  else return false;


public function get($ser_key){
  $this->memConnect($this->tag($ser_key));
  if($var=$this->mem->get($ser_key)) return $var;
  else return false; 

private function tag($ser_key){
  $tag=explode('_',$ser_key);
  return $tag[0];
}
private function errordie($errmsg){
  die($errmsg);
}
}
?>
[/php]

简单的封装了 memcached  的操作. 详细的时间不多.我要离开公司了   

memcached 的多服务器上.  我的实现思路是这样的:   在把信息添加到 内存服务器的时候.我选择了手工设置添加到那个服务器.而不用传统的根据ID自动分配.
这样可以更灵活点.  

以内存服务器名 为表示   比如 存  $arr 这个信息到  en 这台 内存服务器 我就这样写   $mem->set('en_'.$arr);    明白了吧


[php] 
class Mysql
{
private   $mysqlmaster;
private   $myssqlslave;
private static $auid=0;
public function __construct(){
  require 'config.php';
  $msg = $mysql;
  
  $this->mysqlmaster = new mysqli($msg['master'][0],$msg['master'][1],$msg['master'][2],$msg['master'][3]); //master mysql
   $this->mysqlslave  = $this->autotranscat($msg); // slave mysql

  if(mysqli_connect_errno()){
   printf("Connect failed: %s\n",mysqli_connect_error());
   exit();
  }
  if(!$this->mysqlmaster->set_charset("latin1") && !$this->mysqlslave->set_charset("latin1")){
   exit("set charset error");
  }
}

private function autotranscat($mysql){
  session_start();
  $_SESSION['SID']!=0 || $_SESSION['SID']=0   ;
  if($_SESSION['SID'] >=count($mysql)-1) $_SESSION['SID'] = 1;
  else $_SESSION['SID']++;
  $key = 'slave_'.$_SESSION['SID'];
  echo($_SESSION['SID']);
  return new mysqli($mysql[$key][0],$mysql[$key][1],$mysql[$key][2],$mysql[$key][3]);
}

public function mquery($sql){ //insert  update 
  if(!$this->mysqlmaster->query($sql)){
   return false;
  }
}

public function squery($sql){
  if($result=$this->mysqlslave->query($sql)){
   return $result; 
  }else{
   return false;
  };
}
public function fetArray($sql){
  if($result=$this->squery($sql)){
   while($row=$result->fetch_array(MYSQLI_ASSOC)){
    $resultraa[] = $row;
   };
   return $resultraa;
  }
}
}
?>
[/php]

这个是 mysqli 的封装.  也就是   读  从  写 主  的操作的封装.

[php] 
require 'init.php';
$mem = new Memcached;
/* $mem->set('en_xx','bucuo');
echo($mem->get('en_xx'));
$mem->set('cn_jjyy','wokao');
echo($mem->get('cn_jjyy'));
*/ 
$sq = new Mysql;
$sql = "insert into mybb(pid) values(200)";
$mdsql = md5($sql);
if(!$result=$mem->get('cn_'.$mdsql)){
  $sq->mquery("insert into mybb(pid) values(200)"); //插入到主mysql
  $result = $sq->fetArray("select * from mybb"); //查询 是 从mysql
  foreach($result as $var){
   echo $var['pid'];
  }
  $mem->set('cn_'.$mdsql,$result); //添加到 名为 cn 的 memcached 服务器  
}else{
  foreach($result as $var){
   echo $var['pid'];
  }
}
?>
[/php]

这个是使用程序.   看下就大概明白了.
 大站就差不多是这样实现的了.   这种帖似乎  只有我发了.    献丑了

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/735128.htmlTechArticle4点了.今天是最后一天在这间公司.心情不是很好. 所以写下东西发泄下. 一般的大站通常做法是 拿着内存当数据库来用( memcached ). 和很好的读...
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Memcached缓存技术对于PHP中的Session处理的优化Memcached缓存技术对于PHP中的Session处理的优化May 16, 2023 am 08:41 AM

Memcached是一种常用的缓存技术,它可以使Web应用程序的性能得到很大的提升。在PHP中,常用的Session处理方式是将Session文件存放在服务器的硬盘上。但是,这种方式并不是最优的,因为服务器的硬盘会成为性能瓶颈之一。而使用Memcached缓存技术可以对PHP中的Session处理进行优化,提高Web应用程序的性能。PHP中的Session处

PHP8.0中的缓存库:MemcachedPHP8.0中的缓存库:MemcachedMay 14, 2023 am 08:16 AM

PHP8.0中的缓存库:Memcached随着互联网的快速发展,现代应用程序需要高效可靠的缓存技术来提高性能和处理大量数据。由于PHP的流行和开源特性,PHP缓存库已经成为了Web开发社区的一个必备工具。Memcached是一种广泛使用的开源高速内存缓存系统,它能处理数百万个同时连接的缓存请求,可以用于许多不同类型的应用程序,例如社交网络、在线

PHP与Memcached数据库备份与恢复PHP与Memcached数据库备份与恢复May 15, 2023 pm 09:12 PM

随着互联网的快速发展,大规模MySQL数据库备份和恢复成为各大企业和网站必备的技能之一。而随着Memcached的广泛应用,如何备份和恢复Memcached也成为了一个重要的问题。PHP作为Web开发的主力语言之一,在处理备份和恢复MySQL和Memcached上拥有独特的优势和技巧。本文将详细介绍PHP处理MySQL和Memcached备份与恢复的实现方法

修改MD5后是否算为原创内容?修改MD5后是否算为原创内容?Feb 19, 2024 pm 08:04 PM

修改md5后算原创吗在互联网时代,创作原创内容成为了一种重要的价值和资源。然而,随之而来的就是对原创性的质疑和侵权行为。为了防止盗版和抄袭,很多人尝试使用不同的方法来保护自己的原创作品。其中一种常用的方法就是使用MD5算法对作品进行修改,以此来达到“算法保护”的作用。MD5(MessageDigestAlgorithm5)是一种常用的消息摘要算法,它能

华硕飞行堡垒7--原创华硕飞行堡垒7--原创Jul 14, 2023 pm 10:09 PM

  提起华硕旗下的游戏本,大家最先想起来的肯定是玩家国度,但除了玩家国度这个高端系列的游戏本之外,华硕旗下还有飞行堡垒系列的主流游戏本,下面我们就一起来看看游戏玩家呼声最高的华硕飞行堡垒7怎么样。  华硕飞行堡垒7  华硕旗下的飞行堡垒系列笔记本,定位轻松畅玩大型游戏,主打坚固与耐用,一直以来都是大众游戏玩家、学生群体的热门之选。  基本配置  首先我们来了解下这台飞行堡垒7的一些核心配置吧,从配置表中看,最值得注意的就是AMDRyzen73750H+NVIDIAGeForceGTX1660Ti

使用PHP和Memcached进行缓存管理使用PHP和Memcached进行缓存管理May 23, 2023 pm 02:21 PM

随着网络应用的不断增加和数据量的不断膨胀,数据的读写效率成为影响应用性能的重要因素之一。而缓存技术的应用则可以很好地解决这个问题。在PHP应用中,Memcached是最常用的缓存服务器。Memcached是一个高性能的分布式内存对象缓存系统,可以将常用的数据存储在内存中,提高数据检索的效率。本文将介绍如何使用PHP和Memcached进行缓存管理,以及如何优

利用Memcached缓存技术对于PHP中的音视频播放进行优化利用Memcached缓存技术对于PHP中的音视频播放进行优化May 17, 2023 pm 04:01 PM

随着互联网技术的不断发展,音视频资源已经成为了互联网上非常重要的一种内容形式,而PHP作为网络开发中使用最广泛的语言之一,也在不断地应用于视频和音频播放领域。然而,随着音视频网站的用户日益增加,许多网站已经发现了一个问题:在高并发的情况下,PHP对于音视频的处理速度明显变缓,会导致无法及时播放或者播放卡顿等问题。为了解决这个问题,Memcached缓存技术应

PHP与Memcached性能监控PHP与Memcached性能监控May 15, 2023 pm 09:51 PM

随着现代互联网应用的快速发展,用户体验对于一个应用的成功至关重要。如何保证应用的高性能和高可用性,成为了开发人员需要解决的重要问题之一。PHP作为一种广泛应用的编程语言之一,它的性能监控和优化也是非常重要的。Memcached是一个高性能、分布式的内存对象缓存系统,可以帮助应用提高性能和扩展性。本文将介绍如何使用PHP和Memcached实现性能监控的方法。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境