標籤:php memcache 記憶體緩衝
PHP memcache在資料庫查詢中應用,減少串連資料庫的次數,降低伺服器的壓力!
/* * memcache應用說明 memory cache 記憶體緩衝 * 工作原理 * 伺服器連接埠port 11211 * MemCached 存取索引值對key => value * 1.內網訪問 * 2.設定防火牆 */ //建立memcache對象 $mem = new Memcache(); //串連memcache伺服器 $host = ‘localhost‘; $port = ‘11211‘; $mem->connect($host,$port); //$mem->addserver($host,$port); //$mem->addserver(‘192.168.10.254‘, 11211); //新增一台伺服器的記憶體 $dsn = ‘mysql:dbname=test;host=localhost‘; $username = ‘root‘; $passwd = ‘root‘; $options = array( PDO::ATTR_AUTOCOMMIT=>true, PDO::ATTR_PERSISTENT=>true ); //串連資料庫 try{ //建立對象 $pdo = new PDO($dsn, $username, $passwd, $options); //設定錯誤使用異常模式 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "資料庫連接失敗:".$e->getMessage(); exit; } $statement = "select * from users where id > ? and id < ?"; //鍵名用md5()加密後 名字更規範 防止查詢語句資訊洩漏 $key = md5($statement); //直接從記憶體要資料 $data = $mem->get($key); //判斷是否存在$data,如果沒有才需要串連資料庫擷取資料!資料直接從記憶體擷取,實現緩衝。 if(empty($data)){ try{ //給資料庫管理系統,編譯後等待 沒有執行 $pdostatement=$pdo->prepare($statement); $pdostatement->execute(array(3,6)); //設定結果的模式 $pdostatement->setFetchMode(PDO::FETCH_NUM); $data = $pdostatement->fetchAll(PDO::FETCH_ASSOC); //儲存在緩衝中 $mem->set($key, $data,MEMCACHE_COMPRESSED,10); echo ‘第一次資料庫查詢!<br/>‘; }catch (PDOException $e){ echo ‘錯誤的原因:‘.$e->getMessage(); } } //按表格形式輸出 echo ‘<table border="1" width="800" align="center">‘; foreach ($data as $value){ echo ‘<tr>‘; echo ‘<td>‘.$value[‘id‘].‘</td>‘; echo ‘<td>‘.$value[‘username‘].‘</td>‘; echo ‘<td>‘.$value[‘password‘].‘</td>‘; echo ‘<td>‘.$value[‘email‘].‘</td>‘; echo ‘</tr>‘; } echo ‘</table>‘; //關閉串連 $mem->close();
本文出自 “津沙港灣” 部落格,請務必保留此出處http://11410485.blog.51cto.com/11400485/1842668
PHP memcache 記憶體緩衝 資料庫查詢 應用 高洛峰 細說PHP