4点了.今天是最后一天在这间公司.心情不是很好.
所以写下东西发泄下. 一般的大站通常做法是 拿着内存当数据库来用(memcached). 和很好的读写分离备份机制 (
mysql 的主从)
在这样的环境下我们怎么进行
PHP开发呢.本人不太会讲话.所以还是帖代码吧.
刚在linux的 VIM里写的一个demo 调试通过.也同时希望大家拍砖 ,使用PHP5写的. PHP4写出来怕大家说我落后了
复制PHP内容到剪贴板
PHP代码:
<?php
$memcached=array(//用memcached的多进程模拟多台memcached服务器cnen为内存服务器名
'cn'=>array('192.168.254.144',11211),
'en'=>array('192.168.254.144',11212)
);
$mysql=array(//mysql的主从我的环境是:xp主linux从mysql5php5
'master'=>array('192.168.254.213','root','1','mydz'),
'slave_1'=>array('192.168.254.144','root','1','mydz')//可以灵活添加多台从服务器
);
?>
服务器配置文件: 十分方便的 切换主从.当主换了从可以迅速切换为主.支持 多从服务器 .
复制PHP内容到剪贴板
PHP代码:
<?php
classMemcached
{
private$mem;
public$pflag='';//memcachedpconnecttag
privatefunctionmemConnect($serkey){
require'config.php';
$server=$memcached;
$this->mem=newMemcache;
$link=!$this->pflag?'connect':'pconnect';
$this->mem->$link($server[$serkey][0],$server[$serkey][1])or$this->errordie('memcachedconnecterror');
}
publicfunctionset($ser_key,$values,$flag='',$expire=''){
$this->memConnect($this->tag($ser_key));
if($this->mem->set($ser_key,$values,$flag,$expire))returntrue;
elsereturnfalse;
}
publicfunctionget($ser_key){
$this->memConnect($this->tag($ser_key));
if($var=$this->mem->get($ser_key))return$var;
elsereturnfalse;
}
privatefunctiontag($ser_key){
$tag=explode('_',$ser_key);
return$tag[0];
}
privatefunctionerrordie($errmsg){
die($errmsg);
}
}
?>
简单的封装了 memcached的操作. 详细的时间不多.我要离开公司了
在memcached 的多服务器上.我的实现思路是这样的: 在把信息添加到 内存服务器的时候.我选择了手工设置添加到那个服务器.而不用传统的根据ID自动分配.
这样可以更灵活点.
以内存服务器名 为表示 比如 存$arr 这个信息到en 这台 内存服务器 我就这样写 $mem->set('en_'.$arr); 明白了吧
复制PHP内容到剪贴板
PHP代码:
<?php
classMysql
{
private$mysqlmaster;
private$myssqlslave;
privatestatic$auid=0;
publicfunction__construct(){
require'config.php';
$msg=$mysql;
$this->mysqlmaster=newmysqli($msg['master'][0],$msg['master'][1],$msg['master'][2],$msg['master'][3]);//mastermysql
$this->mysqlslave=$this->autotranscat($msg);//slavemysql
if(mysqli_connect_errno()){
printf("Connectfailed:%s/n",mysqli_connect_error());
exit();
}
if(!$this->mysqlmaster->set_charset("latin1")&&!$this->mysqlslave->set_charset("latin1")){
exit("setcharseterror");
}
}
privatefunctionautotranscat($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']);
returnnewmysqli($mysql[$key][0],$mysql[$key][1],$mysql[$key][2],$mysql[$key][3]);
}
publicfunctionmquery($sql){//insertupdate
if(!$this->mysqlmaster->query($sql)){
returnfalse;
}
}
publicfunctionsquery($sql){
if($result=$this->mysqlslave->query($sql)){
return$result;
}else{
returnfalse;
};
}
publicfunctionfetArray($sql){
if($result=$this->squery($sql)){
while($row=$result->fetch_array(MYSQLI_ASSOC)){
$resultraa[]=$row;
};
return$resultraa;
}
}
}
?>
这个是 mysqli 的封装.也就是 读从写 主的操作的封装.
复制PHP内容到剪贴板
PHP代码:
<?php
require'init.php';
$mem=newMemcached;
/*$mem->set('en_xx','bucuo');
echo($mem->get('en_xx'));
$mem->set('cn_jjyy','wokao');
echo($mem->get('cn_jjyy'));
*/
$sq=newMysql;
$sql="insertintomybb(pid)values(200)";
$mdsql=md5($sql);
if(!$result=$mem->get('cn_'.$mdsql)){
$sq->mquery("insertintomybb(pid)values(200)");//插入到主mysql
$result=$sq->fetArray("select*frommybb");//查询是从mysql
foreach($resultas$var){
echo$var['pid'];
}
$mem->set('cn_'.$mdsql,$result);//添加到名为cn的memcached服务器
}else{
foreach($resultas$var){
echo$var['pid'];
}
}
?>
这个是使用
程序. 看下就大概明白了.
大站就差不多是这样实现的了. 这种帖似乎只有我发了. 献丑了
分享到:
相关推荐
复制代码 代码如下: <?... $mysql = array( // mysql 的主从 我的环境是 : xp 主 linux 从 mysql 5 php5 ‘master’=>array(‘192.168.254.213′,’root’,’1′,’mydz’), ‘slave_1’=>arra
中文名: Apache, MySQL, memcached和Perl开发Web应用程序 原名: Developing Web Applications with Apache, MySQL, memcached, and Perl 作者: Patrick Galbraith资源格式: PDF 版本: 文字版 出版社: Wrox书号: ...
Memcached 原理和使用详解
本书面向想要使用MySQL, memcached, Apache和Perl编写程序,并对提升开发进程和效率感兴趣的程序员.
Windows8上安装虚拟机VirtualBox,然后新建虚拟电脑,搭建CentOS6.5 + mysql + nginx + php + memcached平台环境,部署网站。文档中记录了部分FAQ。
资源名称:memcached原理和使用详解内容简介: Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库...
本文档主要讲述的是Java环境下Memcached应用详解;这里将介绍Java环境下Memcached应用,Memcached主要是集群环境下的缓存解决方案,希望本文对大家有所帮助。 本文将对在Java环境下Memcached应用进行详细介绍。...
本书面向想要使用MySQL, memcached, Apache和Perl编写程序,并对提升开发进程和效率感兴趣的程序员.
8:Mysql 简介和创建新的数据库 9:数据库中的常用SQL语句 10:MYSQL在PHP5中的应用 11:学习制作PHP+MYSQL留言板(上) 12:学习制作PHP+MYSQL留言板(下) 13:PHP+MYSQL分页原理 14:PHP上传原理及应用 15:PHP...
nginx+apache+mysql+php+memcached+squid搭建门户网站
Memcached主从备份资源包,包括libevent-1.4.9-stable.tar.gz、memcached-1.2.8.tar.gz、memcached-1.2.8-repcached-2.2.tar.gz、magent-0.5.tar.gz
3、MySQL数据库文件存放目录:MySQL5.1\data或MySQL4.0\data 4、网站根目录[HTML,PHP]www\htdocs [ASP]www\asp [CGI,Perl]www\cgi-bin 5、访问本机请用http://127.0.0.1/或https://127.0.0.1/ (如果开启SSL) ...
memcache与mysql结合必备 memcached_functions_mysql-1.1.tar.gz
PHP100视频教程8:Mysql 简介和创建新的数据库 PHP100视频教程9:数据库中的常用SQL语句 PHP100视频教程10:MYSQL在PHP5中的应用 PHP100视频教程11:学习制作PHP+MYSQL留言板(上) PHP100视频教程12:学习制作...
PHP MemCached 高级缓存应用代码
文件详细描述了Memcached相关原理和使用方法,内容包括:Memcached原理介绍、Memcached安装和使用说明、Memcached使用的技巧等。
php mysql redis nginx memcached
分布式缓存系统Memcached简介及开发环境搭建