You are here

9 $databases语法

admin 的头像
Submitted by admin on 星期四, 2015-06-04 01:50

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

    $databases数组是一个至少包含3层的嵌套数组。第一层定义了数据库的键。第二层定义了数据库目标。每个目标的值就是对应的连接信息。通过实例我们可以更好的理解这一点。

<?php
$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'localhost',
);
?>

    上面的$databases数组定一个单个的连接键("default"),单个的目标("default")。连接采用的数据库为MySQL,数据库名字为“drupaldb”,访问数据库的用户名密码分别为“username”、“secret”,数据库所在的主机为“localhost”。上面的例子代表着Drupal单SQL服务器安装的典型情况,对于大多数站点,这就足够了。

    对于主/从服务器的配置,我们则需要这样定义:

<?php
$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb1',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver1',
);
$databases['default']['slave'][] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb2',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver2',
);
$databases['default']['slave'][] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb3',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver3',
);
?>

    这个定义提供了一个“主”服务器和两个“从”服务器。注意,“从”服务器的键是一个数组。如果有目标被定义成为连接信息的数组形式,那么对于该目标的每个页面请求,系统会随机的从中选择一个服务器。也就是说,对于一个页面请求,所有的从查询会发送给dbserver2,而对于下一个请求,则可能都会发送给dbserver3

<?php
$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb1',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver1',
);
$databases['extra']['default'] = array(
  'driver' => 'sqlite',
  'database' => 'files/extradb.sqlite',
);
?>

    这个配置定义了一个单独的主Drupal数据库,和一个键为"extra"的附加数据库,后者采用SQLite。注意SQLite的连接信息的结构和MySQL的大不相同。对于每个驱动,由于情况不同,所以可以有不同的配置。

    注意,无论你定义了多少个连接,Drupal只有在该连接被用到时才会打开它。


Drupal版本: