Mysql

記憶體記憶體實現

  • April 15, 2013

我有一個使用 WP Super Cache 外掛的 Wordpress 站點,以使我的部落格文章和頁面保持為 HTML,以便執行更少的 PHP/MySQL 程式碼。但是,有一個無法記憶體的精選框。所以,我手動配置它繞過記憶體並保持動態(程式碼在每次頁面載入時執行)。

因此,整個頁面的大部分是使用 HTML 執行的,而特定部分(特色欄框)使用 PHP/MySQL。

當然,在每次頁面載入時執行的程式碼都很簡單<?php $query = mysql_query("SELECT * [... rest of my code here ...]"); ?>,可以從我的數據庫中選擇一些數據,$fetch<?php echo [...] ?>在網頁中列印結果。但是,與其每次呼叫數據庫來獲取此結果,不如記憶體此結果。所以,我有三個選擇:

  1. 讓 WP Super Cache 記憶體我的整個頁面。但我不能這樣做,因為在我目前沒有記憶體的盒子裡,數據庫數據可以隨時更改(通常每天 1 次)。所以,我不能記憶體這個盒子,我們必須放棄這個選項 1。
  2. 在 my.cnf 中啟動 query_cache。但是,這只會記憶體 MySQL 而不會記憶體 PHP。:(
  3. 比,我們有memcache(或APC,我不太了解它的區別)。經過我的所有解釋,這是最後一個問題:我想知道在我的伺服器中安裝 memcache 是否足以讓它立即工作,或者我必須對我的程式碼進行任何更改以使其適應 memcache;我想知道對於我必須記憶體的程式碼的這個特定部分,它是否真的可以幫助我使用 PHP 和 MySQL,或者它的結果類似於啟用 query_cache?還是在我的情況下使用 APC 而不是 memcache 更好?

謝謝,

安德烈。

在決定這 3 個選項之前,您應該確定您到底需要什麼。

我的建議如下:

  1. 安裝 memcache 和必要的 php 模組以與 memcache 一起使用。安裝 memcache 後,您將有一個 IP 和 PORT 可以連接,用於 SET / GET 操作
  2. 確定您需要在 Wordpress php 程式碼中的確切位置注入顯示“特色”內容的程式碼
  3. 添加類似於以下的php程式碼:
  • 連接到記憶體記憶體
  • 檢查是否存在名為“FEATURED STUFF”的 KEY/VALUE 對
  • 如果有,獲取該對,並顯示該對的值
  • 如果沒有,請執行 SELECT 查詢,獲取結果,建構一個包含“FEATURED STUFF”的 HTML 正文的字元串,將該字元串作為 KEY/VALUE 對放入記憶體記憶體中。
  1. 上面的程式碼不應該被 WP Super Cache 記憶體。讓 memcache 為您做記憶體。

如果您在實際實施方面需要幫助,請告訴我。


範例 PHP 程式碼:

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

if ($gotten = $memcache->get('featured_stuff')) {
   echo 'CACHE HIT'</br>';
   echo $gotten;
} else {
   # Never mind - fetch it and store for next time!
   $gotten = dbfetch($query, ...);
   $memcache->set($featured_stuff,$gotten);
   echo $gotten;
}

引用自:https://dba.stackexchange.com/questions/40030