如何根据文件位置使用不同的数据库

时间:2012-01-10 00:32:35

标签: php mysql

我不确定我该怎么做。但总的想法是当有人访问我们的脚本时: - http://livescript.phpiscool.com或任何子文件夹

数据库应该是正常的“实时”数据库。

但是当有人试图进入/导航时: - http://livescript.phpiscool.com/beta1 要么 - http://livescript.phpiscool.com/beta2

脚本应该使用不同的数据库(“beta”数据库)......

我们在config.php中有数据库配置,看起来像这样:

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

3 个答案:

答案 0 :(得分:0)

$ _ SERVER ['REQUEST_URI']将包含域名之后的第一个斜杠,因此从位置0开始用'/ beta'检查它应该可以完成工作

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

显式比较(===)表示int为0而不是(==),如果找不到匹配,可能会对“false”给出误报

答案 1 :(得分: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

答案 2 :(得分:0)

更清洁的解决方案是维护代码库的两个副本,一个用于测试版,一个用于实时版。如果您使用的是源代码控制(如subversion),这是微不足道的,它使用类似于名为“branches”的文件夹的概念(关于Subversion的维基百科文章:http://en.wikipedia.org/wiki/Subversion)。为beta和live提供两份代码的好处是;

  • 如果您在开发过程中对网站的BETA版本进行了更改,从而导致网站意外中断,则不会影响实际网站。
  • 随着网站的增长,您可以将BETA或开发副本移动到其他计算机或本地计算机上进行开发。
  • 您不会在讨厌的情况下乱丢您的代码,看看您是否正在运行开发/现场版。

如果您使用的是Apache Web服务器,则可以使用Apache VHosts同时运行这两个独立的站点(假设您自己控制服务器); http://httpd.apache.org/docs/2.0/vhosts/examples.html

从长远来看,这是更好的解决方案。