memcachedとmysqlマスタースレーブ環境でのPHP開発コードの詳細解説_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:37:22
オリジナル
824 人が閲覧しました

コードをコピーします コードは次のとおりです:

$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') //複数のスレーブサーバーを柔軟に追加できます
?>

サーバー設定ファイル: マスターとスレーブを切り替えるのに非常に便利です。 、スレーブは、サーバーから複数の


コードをコピーします。コードは次のとおりです。 public $pflag=''; // memcached pconnect タグ private function memConnect( $serkey){ $server = $memcached;mem = new Memcache; = !$this->pflag ? '接続' : 'pconnect' $this->mem->$link($server[$serkey][0],$server[$serkey][1])または $this->errordie('memcached 接続エラー');
}
public function set($ser_key,$values,$flag='',$expire=''){
$this->memConnect($ this->tag($ser_key));
if($this->mem->set($ser_key,$values,$flag,$expire))
else を返す
}
public; function get($ser_key){
$this->memConnect($this ->tag($ser_key));
if($var=$this->mem->get($ser_key)) return $ var;
else return false;
プライベート関数タグ($ser_key) {
$tag=explode('_',$ser_key);
プライベート関数errordie($errmsg); {
die($errmsg);
}
}


memcached の操作を簡単にカプセル化します。
memcached の複数のサーバー上での実装のアイデアは次のとおりです。 : メモリ サーバーに情報を追加する場合、従来の ID に基づく自動割り当てではなく、[手動で設定してそのサーバーに追加する] を選択しました。
これをより柔軟に表現するには、メモリ サーバーの名前を使用します。 、$arr 情報を en に保存します。このメモリ サーバーについては、 $mem-> ;set('en_'.$arr); と書きます



コードをコピーします

コードは次のとおりです。
クラスMysql
{
private $mysqlslave;
public function __construct(){
$msg = $mysql; >mysqlmaster = new mysqli($msg['master'][0],$msg['master '][1],$msg['master'][2],$msg['master'][3] ); // マスター mysql
$this->mysqlslave = $this->autotranscat($msg ); // スレーブ mysql
if(mysqli_connect_errno()){
printf("接続に失敗しました: %sn",mysqli_connect_error( ));
終了();
if(!$this->mysqlmaster-> set_charset("latin1") && !$this->mysqlslave->set_charset("latin1")){
終了("設定文字セット エラー");
}
}
プライベート関数 autotranscat($mysql){ $_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']);
新しい mysqli($mysql[$key][0],$mysql[$key][1],$mysql[$key] ][2],$mysql[$key][3]);
}
public function mquery( $sql){ //更新を挿入
if(!$this->mysqlmaster->query($sql)) {
return false
}
}
public function squery($sql){
if($result =$this->mysqlslave->query($sql)){
return $result; false を返します。 ){
$resultraa[] = $row;
};
return $resultraa;
}
}


これは、スレーブからの読み取りと書き込みのカプセル化です。操作をマスターするには




コードをコピーします

コードは次のとおりです:

require 'init.php';
$mem = 新しい Memcached
/* $mem->set('en_xx','bucuo');
echo($mem->get('en_xx')) ;
$mem->set('cn_jjyy','wokao');
*/
$sq = "挿入mybb(pid) 値(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']
}
}

;

http://www.bkjia.com/PHPjc/321935.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/321935.html技術記事次のようにコードをコピーします。 ?php $memcached = array( //memcached のマルチプロセスを使用して、複数の memcached サーバーをシミュレートします。 cn en はメモリ サーバー名です。 'cn'=array('192.168.254.144',11211),.. .
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!