2012-01-10 47 views
0

我不知道我該如何做到這一點。但一般的想法是,當有人訪問我們的腳本: - http://livescript.phpiscool.com或任何子文件夾如何根據文件位置使用不同的數據庫

數據庫應該是正常的「活」數據庫。

但是,當有人試圖進入/導航: - http://livescript.phpiscool.com/beta1 或 - http://livescript.phpiscool.com/beta2

腳本應該使用不同的數據庫( 「測試版」 的數據庫)...

我們在DATABSE配置config.php文件,它看起來像:

<?php 
$db_host = "localhost"; 
$db_username = "tureh_user"; 
$db_password = "crazypssrd"; 
$db_name = "database_test"; 
?> 
+0

必須更多地瞭解您的構建過程。 – dqhendricks 2012-01-10 00:38:23

回答

0

$ _ SERVER [「REQUEST_URI」]將包含域Ø後一切從第一個斜槓nwards,所以檢查它起始於位置0與「/β」應該做的工作

if(strpos(strtolower($_SERVER['REQUEST_URI']),'/beta') === 0) 
{ 
    $db_host = "beta"; 
} 
else 
{ 
    $db_host = "localhost"; 
} 

明確比較(===)指0 INT,而不是(==),其可以給出錯誤的積極的「假」,如果它不能找到匹配

0

大多數時候,那種問題是由配置陣列處理:

$db['live'] = array(); // Your live configuration 
$db['beta'] = array(); // Your beta configuration 

$mode = process_url_to_get_mode(); 

然後,利用$db[$mode]實例的連接。 這實際上是CodeIgniter的does it

當然,你可以依靠像Scuzzy的功能讓你得到$mode

0

更簡潔的解決方案是維護代碼庫的兩個副本,一個用於測試版,另一個用於實時版本。如果你使用的是諸如subversion之類的源代碼控制,它使用類似於名爲「branches」的文件夾(維基百科關於Subversion的文章:http://en.wikipedia.org/wiki/Subversion),這很簡單。爲您的測試版和現場版提供兩份代碼的好處是;

  • 如果您在開發過程中對網站的BETA版進行了更改,意外中斷了網站,則活動網站不會受到影響。
  • 隨着您的網站的發展,您可以將BETA或開發副本移動到不同的機器上,或在本地機器上進行開發。
  • 您不會亂糟糟地檢查代碼,看看您是否正在運行開發/實時版。

如果您使用的是Apache Web服務器,您可以使用Apache VHosts(假設您自己控制服務器)同時託管這兩個單獨的站點以同時運行; http://httpd.apache.org/docs/2.0/vhosts/examples.html

從長遠來看,這是更好的解決方案。

相關問題