2014-12-05 41 views
0

我有一些PHP代碼的一年品牌和型號,查詢MySQL數據庫。這一年在PHP中是硬編碼的,因爲它是少量的數據。然而,基於先前的選擇從數據庫查詢品牌和型號。 IE:2012年選擇允許製造僅在2012年製造的汽車,然後在選擇製造後列出所選製造的模型。下面是我創建查詢來選擇make的代碼。在調用一段時間來加速後續查詢之後,如何緩存這些內容?或者甚至有可能?如何緩存這個mysql查詢的車輛的品牌和型號?

我要指出,我的託管服務提供商不允許我轉上高速緩存爲MySQL。這就是爲什麼我想在PHP中嘗試它。

$year = $_POST['year'];  // get the year from post - sent via ajax 

$vehmakes = $cl->getmakes($year); 
$output = '<option value="">-- All Makes --</option>'; 
while($row = mysql_fetch_row($vehmakes)){ 
$output .= '<option value="'.$row[0].'">'.$row[0].'</option>/n'; 
}; 

echo $output; 

謝謝!

+0

我會嘗試打開mysql的緩存。看看這個http://theukwebdesigncompany.com/articles/php-caching.php得到一個更好的主意 – unixmiah 2014-12-05 21:53:39

+0

你應該看看的memcached或Redis的。但是你的提供者可能不會提供這些。如果您無法訪問那些使用類似[phpFastCache](http://www.phpfastcache.com/)或任何其他文件緩存庫的文件緩存。 – slapyo 2014-12-05 21:56:24

+0

您應該看看APC或Xcache的Doctrine緩存系統以獲得一些最佳實踐。清漆作爲HTTP緩存也很有用。 – K4timini 2014-12-05 22:43:03

回答

0

我只想寫一個平面文件逗號分隔的品牌的名單給定年份,只是檢查文件是否讓你的數據庫查詢之前存在。您可以在將來的文本文件中設置時間戳,並檢查是否已過期,如果是這樣,請創建一個覆蓋舊的緩存文件。

if(file_exists($_POST['year'].'.txt')) 
{ 
// the file exists 
$select_options = explode(",",file_get_contents($_POST['year'].'.txt')); 
// loop through the array for your options 
} 
else 
{ 
// make your db query 
} 
+0

從來沒有想到這一點。我會將這個平面文件保存在這個代碼中的php文件所在的文件夾中嗎?我只是用我選擇的文件名替換'.txt'? – Philip 2014-12-05 22:17:40

+0

你可以存儲任何你喜歡,你可以有一個專門的緩存目錄,是的,你可以使用任何名字CSV,XML,JSON,TXT什麼 – 2014-12-05 22:19:39

+0

如果你想使用文件作爲緩存,不要忘了開發腳本刷新它。例如,每3600秒一個用戶將刷新其他人的緩存文件。所以,一個用戶會爲其他人加載數據。您應該將緩存文件存儲在特定文件夾中並設置自定義chmod(chmod -R 777)。 – K4timini 2014-12-05 22:35:52