/*

index.php   程序入口,用来构造sql(如查询,更新)

config.php  配置参数(memcache,mysql)

init.php    封装memcached操作(memcache连接,设置,获取)

mysqli.php  封闭mysql操作(mysql主连接,mysql从连接,mysql主更新,mysql从查询)

*/

index.php

require 'init.php';              //加载init.php

$mem = new Memcached;            //建立memcached对象,对象为$mem

/*

$mem->set('en_xx','bucuo',0,30); //测试连接memcached,用来调试很不错。

echo($mem->get('en_xx'));

$mem->set('cn_jjyy','wokao',0,30);

echo($mem->get('cn_jjyy'));

*/

require 'mysqli.php';

$sq = new Mysql;

//下面这两个sql是人为构造的,这也可以做成一个接口

$sql = "Select * from traffic";

//$sql = "insert into traffic(id,acct_mth,amount) values(14,14,46)";

//进行判断,如果sql语句中有头有select(不区分大小写)

if(preg_match ("/^select/i", $sql)){

$mdsql = md5($sql);

if(!$result=$mem->get('cn_'.$mdsql)){      //这里选择的是cn memcached,大家也可以根据需求在前面做个条件来将数据存取放入到另一个memcached中。

$result = $sq->fetArray($sql); //查询是 从mysql

foreach($result as $var){

echo $var['amount'];

}

$mem->set('cn_'.$mdsql,$result,0,600); //添加到 名为cn的memcached 服务器

}else{

foreach($result as $var){

echo $var['amount']."
";

}

}

}else{

$sq->mquery($sql);     //更新是 主mysql

}

?>

config.php

$memcached = array(

'cn'=>array('192.168.x.y',11211),

'en'=>array('192.168.y.x',11211)

);

$mysql    = array(

'master'=>array('x','root','','test'),

'slave_1'=>array('y','root','','test'),

'slave_2'=>array('z','root','','test') //可以灵活添加多台从服务器

);

?>

init.php

class Memcached

{

private $mem;

public $pflag=''; // memcached pconnect tag

private function memConnect($serkey){     //建立memcached连接,这些都很容易理解

require 'config.php';

$server = $memcached;  //$memcached是cn,en的数组

$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);

}

/*  这段函数是我用来在类中做调试用的。

public function show($messages){

echo $messages;

}

*/

}

?>

mysqli.php

class Mysql

{

/* 这段函数是我用来调试的

public function show($messages){

var_dump($messages);

}

*/

private   $mysqlmaster;

private   $myssqlslave;

public function __construct(){   //构造函数

require 'config.php';

$msg = $mysql;          //$mysql是master,slave_1,slave_2

$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){        //这段函数的作用是获取从服务器序列号,如1,2

session_start();                      //启动会话

$_SESSION['SID']!=0 || $_SESSION['SID']=0;  //如果不为0,就不做赋值操作(那第一次访问的话,肯定会做赋值操作的)

if($_SESSION['SID'] >=count($mysql)-1) $_SESSION['SID'] = 1;  //上面那个动作是为这个动作准备的

else $_SESSION['SID']++;

$key = 'slave_'.$_SESSION['SID'];

return new mysqli($mysql[$key][0],$mysql[$key][1],$mysql[$key][2],$mysql[$key][3]);

}

public function mquery($sql){ //mysql主 insert update

if(!$this->mysqlmaster->query($sql)){

return false;

}

}

public function squery($sql){   //mysql从 查询

if($result=$this->mysqlslave->query($sql)){

return $result;

}else{

return false;

};

}

public function fetArray($sql){  //mysql从 查询 入口

if($result=$this->squery($sql)){

while($row=$result->fetch_array(MYSQLI_ASSOC)){

$resultraa[] = $row;

};

return $resultraa;

}

}

}

?>

memcached+Mysql(主从)

昨天和守住看了下http://hi.baidu.com/156544632/blog/item/3b26527b68623ff00bd18746.html这篇文章,思路很好,但感觉就是太乱了,而且还出 ...

LVS+Keepalived+Squid+Nginx+MySQL主从高性能集群架构部署方案

方案一,在tomcat的workers.properties里面配置相关条件 worker.tomcat.lbfactor= worker.tomcat.cachesize= worker.tomca ...

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

mysql主从数据库

Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库 ...

mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...

黄聪:Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

mysql主从配置,读写分离

Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库 ...

配置mysql主从数据库

来源地址:https://www.cnblogs.com/alvin_xp/p/4162249.html Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡 ...

Mysql主从分离介绍及实现

参考: http://www.cnblogs.com/panxuejun/p/5887118.html https://www.cnblogs.com/alvin_xp/p/4162249.html ...

随机推荐

个人项目(JUnit单元测试)

---恢复内容开始--- 一.             题目简介 这次的单元测试我选择作了一个基本运算的程序,该程序实现了加,减,乘,除,平方,倒数的运算,该程序进行测试比较的简单,对于初步接触JUn ...

《笨办法学C》笔记之基础语法

这篇笔记不怎么系统,只记录自己比较生疏的知识 变量定义 类型 定义 格式化符号 备注 整数 int %d 长整型 long %ld 单精度浮点 float %f 双精度浮点 double %f 字符 ...

GIT FLOW 时序图

git flow sequence md link: git branching model master->master branch: use default branch Note rig ...

[安卓]Android窗口、视图、布局

1.窗口全屏的两种方法: 转自:http://blog.sina.com.cn/s/blog_4c451e0e010133ab.html 设置全屏包括两个部分: 窗口全屏和Activity全屏.窗口全 ...

如何用c语言调用c++做成的动态链接库

今天在做东西的时候遇到一个问题,就是如何在C语言中调用C++做的动态链接库so文件如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明, 那么你如何用c调用呢,别着急,本文通过一个小小 ...

在mac上安装hadoop伪分布式

换了macbook pro之后,要重新安装hadoop,但是mac上的jdk跟windows上的不同,导致折腾了挺久的,现在分享出来,希望对大家有用. 一:下载jdk 选择最新版本下载,地址:http ...

windows 下的命令行工具。。

1.powershell window自带..右下角搜索..powershell 2.conemu https://code.google.com/p/conemu-maximus5/wiki/Dow ...

JSON 解析(门店)

package com.j1.mai.action; import java.io.BufferedReader; import java.io.IOException; import java.io ...

Python模拟登陆万能法-微博|知乎

Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...

spring入门--spring入门案例

spring是一个框架,这个框架可以干很多很多的事情.感觉特别吊.但是,对于初学者来说,很难理解spring到底是干什么的.我刚开始的时候也不懂,后来就跟着敲,在后来虽然懂了,但是依然说不明白它到底是 ...

php memcached mysql_php memcached+Mysql(主从)相关推荐

  1. php memcached mysql_PHP Memcached使用详解

    翻译烂到家了,看不顺眼轻喷... 1.为什么要使用PDO? mysql_函数已经过时,相当一段时间以来,mysql_函数在其他SQL数据库编程接口方面已经有所差别:它不支持预处理,存储过程,事务等一些 ...

  2. memcached + mysql_memcached+Mysql(主从)

    昨天和守住看了下http://hi.baidu.com/156544632/blog/item/3b26527b68623ff00bd18746.html这篇文章,思路很好,但感觉就是太乱了, 而且还 ...

  3. python cache MySQL_Python判断Memcached是否缓存MySQL结果

    介绍一个生产环境中memcached的使用场景,主要是memcached存储关系型数据库MySQL的查询结果,比如网站的下载排名等,这种查询每次从关系型数据库中查询,会增加磁盘的I/O开销,而这个排名 ...

  4. memcached php mysql_PHP: memcached

    客户端下载 系统要求及环境配置注意:您已经有 php memcache 等环境,请注意教程中的一些提示,以免生产环境被覆盖,导致业务不可用,在升级及再编译环境前请做好环境备份. windows 系列版 ...

  5. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  6. mysql主从配置 简书_Mysql主从配置,实现读写分离-Go语言中文社区

    转载:https://www.cnblogs.com/alvin_xp/p/4162249.html 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层 ...

  7. mysql主从配置访问_Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  8. mysql主从配置对解决并发有用_MySQL主从配置,读写分离

    大型网站为了缓解大量的并发访问,要网站实现分布式负载均衡.但是数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果不堪设想.这时 ...

  9. mysql主从docker_(学习到实践)四、docker搭建mysql主从实践

    前言 目前已完成:php7及扩展.redis5的Dockerfile测试版编写,稍许完善后同步上传到github,(记下这里memcached还没有剥离安装). 今天数据库,编程的一个重要原则是不要重 ...

最新文章

  1. metaSPAdes:新型多功能宏基因组拼接工具
  2. SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
  3. pthread_detach 常规使用记录
  4. Hadoop集群日常运维
  5. Handler源码剖析
  6. sudo 安装 常见错误
  7. 被嘲“狗都不如”的那个人,年入1000万了
  8. 怎样在QML中设计一个expandable ListView
  9. linux ubuntu系统远程连接linux ubuntu
  10. 郝斌java教程下载_郝斌Java自学教程全集打包,视频教程下载
  11. 计算机专业学不学ps,慎重!不建议你报的院校专业,是因为真的考不上!
  12. idc机房安装服务器系统,IDC机房如何部署IP KVM
  13. 计算机应用基础 项目4-5 分析商品销售业绩 ppt课件,计算机应用基础课件项目四汇总.ppt...
  14. pysam筛选reads写bam
  15. R_ggparliament_会议布局
  16. 【每日一读】Self-Paced Network Embedding
  17. System.Windows.Forms.DataVisualization.Charting.Chart
  18. Anaconda环境下,处理ERROR 1: PROJ: pj_obj_create: Cannot find proj.db问题
  19. Pytorch模型加密的方法
  20. poj 百练 2807:两倍

热门文章

  1. 你的孤独,虽败犹荣——读书笔记
  2. RXD、TXD你接错了没?
  3. 云服务器租赁维护合同,云服务器 租赁 服务合同
  4. 护航者,腾讯云: 2017年度游戏行业DDoS态势报告—回溯与前瞻
  5. 微软拥抱开源_拥抱开源作为视觉艺术家
  6. 【无标题】学习贪吃蛇代码
  7. 5JS库-前端框架(库)-初识jQuery
  8. 李航老师《统计学习方法》第二版第二章答案
  9. Ubuntu18.04屏幕分辨率问题
  10. 2020年白领年终奖报告来了,平均值为7826元