Home > Backend Development > PHP Tutorial > Detailed explanation of PHP development code in memcached and mysql master-slave environment_PHP tutorial

Detailed explanation of PHP development code in memcached and mysql master-slave environment_PHP tutorial

WBOY
Release: 2016-07-21 15:37:22
Original
889 people have browsed it

Copy code The code is as follows:

$memcached = array( //Use memcached's multi-process to simulate multiple Taiwan memcached server cn en is the memory server name
'cn'=>array('192.168.254.144',11211),
'en'=>array('192.168.254.144',11212)
);
$mysql = array( // mysql master-slave my environment is: xp master linux slave mysql 5 php5
'master'=>array('192.168.254.213','root', '1','mydz'),
'slave_1'=>array('192.168.254.144','root','1','mydz') //You can flexibly add multiple slave servers
; 🎜>

Copy code

The code is as follows:

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);
}
}
?>


Simply encapsulates the operation of memcached. Not much time for details. I am leaving the company
On multiple memcached servers, my implementation idea is as follows: When adding information to the memory server, I choose to manually set it to be added to that server instead of the traditional automatic allocation based on ID.
This can be more accurate Be flexible.
Use the name of the memory server to express. For example, to save $arr information to the en memory server, I would write $mem->set('en_'.$arr); Understand it


Copy code

The code is as follows:

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: %sn",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;
}
}
}
?>


This is an encapsulation of mysqli. It is an encapsulation of the operation of reading from slave and writing to master.




Copy code

The code is as follows:

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)"); //Insert into main mysql
$result = $sq->fetArray("select * from mybb"); //The query is from mysql
foreach($result as $var){
echo $var['pid'];
}
$mem->set('cn_'.$mdsql,$result); //Add to the memcached server named cn
}else{
foreach($result as $var ){
echo $var['pid'];
}
}
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/321935.htmlTechArticleCopy the code as follows: ?php $memcached = array( //Use memcached multi-process to simulate multiple memcached servers cn en is the memory server name 'cn'=array('192.168.254.144',11211),...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template