2011-05-25 38 views
1

我正在製作一個網站,其中包含每個國家和城市的URL以及餐館名稱。PHP高效頁面處理程序

(www.domain.com/country/city/restaurant-name)

我知道該怎麼做了Apache重寫它,

的問題是如何使它儘可能高效wuth PHP。

現在我要做的就是先申報國家 和城市的二維數組:

$countries = array("United-Kingdom"=>array("Bristol","London"), 
       "Italy"=>array("Rome","Milan","Napoli")); 

比我檢查,如果這個城市存在:

if (isset ($countries[$page]) 

,然後我使用在城市的in_array功能中, 餐館名稱在數據庫中查找。

國家和城市的數量相當龐大,所以我想知道 如果有更有效的方法做到這一點。

我雖然也許爲每個國家做一個PHP文件,並嘗試包括它, ,並在每個php文件中有一系列城市。 並且可能會設置一個cron作業來更新這些文件。

我想知道的是,這樣做的最有效方式是使用 儘可能少地處理CPU使用率,並儘可能快地爲服務器提供服務。

+2

爲什麼你不具備國家和城市的分貝,因爲你使用它無論如何餐館? – 2011-05-25 22:02:23

+0

沒有特別的理由,我只是認爲,創建一個MySQL查詢比設置一個數組更耗費資源,而且國家和城市幾乎是不變的。 – fiftyeight 2011-05-26 11:36:18

回答

5

比使用in_array更快的方法是堅持isset()。你可以組織你的陣列是這樣的:

$countries = array("United-Kingdom"=>array("Bristol"=>true,"London"=>true); 

然後....

if(isset($countries[$country][$city])){ 
    //... 
} 
+0

這是正確的答案。你不需要檢查兩次,只需要一次。 – 2011-05-25 22:47:03

+0

和每個國家都有單獨的php文件的想法?它有什麼好處?我的想法是,即使是大型數組的聲明也是相當耗費資源,也許我可以檢查它是哪個國家,並且只聲明該國家的數組。你的答案是gr8但:) – fiftyeight 2011-05-26 11:38:50

+0

謝謝。如果你不想使用數據庫,你可以爲每個國家保存一個目錄,每個城市都有一個文件。然後,您可以檢查文件的存在:if(file_exists($ country.DIRECTORY_SEPARATOR。$ city))...並且如果您找到該文件,那麼您只需抓取目錄即可抓取城市。 – Jage 2011-05-26 13:33:59