PHP が memcache からデータを読み取り、バッチで mysql に書き込む方法、memcachemysql
この記事の例では、PHP が memcache からデータを読み取り、それをバッチで mysql に書き込む方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
Memcache を使用すると、PHP とデータベースへの負荷を軽減できます。次のコードは、高負荷時のデータベース書き込みのボトルネックの問題を解決するものです。ip pv uv の書き込み時に、ユーザーは 1 分間に数万回のアクセスに達します。これらのデータは記録する必要があります。データベースへのリアルタイム書き込みは必然的にクラッシュします。
次のテクノロジーを使用すると、たとえば、多数のユーザーが同時に登録した場合、それらを一度にキャッシュしてデータベースに書き込むことができます。コードは次のとおりです。
コードをコピーします コードは次のとおりです:
public function cldata(){
$memcache_obj = 新しい Memcache
;
$memcache_obj->connect('127.0.0.1', '11211');
$all_items = $memcache_obj->getExtendedStats('items');
foreach($all_items as $option=>$vall){
If (isset($all_items[$option]['items'])) {
$items = $all_items[$option]['items'];
foreach ($items as $number => $item) {
$ Str = $ Memcache_Obj- & GTT ('Cachedump', $ Number, 0);
$line = $str[$option];
if(is_array($line) && count($line) > 0){
foreach($line as $key => $value) {
$keys[] = $key;
}
}
}
}
}
Dump(count($keys));//キーを取得します
If(count($keys)>50){//書き込まれるデータの数
$end=50;
}その他{
$end=count($keys);
}
for($i=0;$i
if(!strstr($keys[$i],'datadb')) 続行;
$ksv = str_replace('datadb','',$keys[$i]);
/*$logdata = unserialize(S('login'.$ksv));//ログイン書き込み
If(is_array($logdata)){
$this->addsuidinlogin($logdata[0],$logdata[1],$logdata[2],1);
} } */
/*$sdata = unserialize(S('regadd'.$ksv));//レジスタ書き込み
If(is_array($sdata)){
$this->baiduad($sdata[0],$sdata[1],$sdata[2],$sdata[3],$sdata[4],1);
}
*/
$regdata = unserialize(S('datadb'.$ksv));
$ress[]=$regdata;
S('datadb'.$ksv,null);
}
$addb = M()->db(66,C('DB_WEB_AD'));//バッチ書き込み addall
$addb->table('mj_ad_count')->addall($ress);
echo M()->getLastSql();
}
補足:使用できるツールはmemadminとmemadminのドキュメントです
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/934928.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/934928.html
技術記事
phpがmemcacheからデータを読み込んでmysqlに一括で書き込む方法memcachemysql この記事ではphpがmemcacheからデータを読み込んでmysqlに一括で書き込む方法について説明します。参考のためにみんなで共有してください。 ...