【问题标题】:Declare Multiple DB Host in an array and make DB calls在数组中声明多个数据库主机并进行数据库调用
【发布时间】:2013-08-01 23:44:43
【问题描述】:

我是 PHP 新手。我想要实现的是在一个数组中声明多个数据库主机。如下所述:

  $slaves=array(
        array(  //Slave 1
                'name' => 'slave1',
                'server' => '10.10.1.10',
                'user' => 'user1',
                'password' => 'p@ssuser1'
                'port' => '3306'),
        array(  //Slave 2
                'name' => 'slave2',
                'server' => '10.10.1.11',
                'user' => 'user2',
                'password' => 'p@ssuser2'
                'port' => '3306'),
        )

一旦完成,我想对这些从站进行随机调用,即每个读取请求都应该从其中一个从站获得服务。

  $idx = time() % count($slaves);
$slave = $slaves[$idx];
$con = mysqli_connect($slave['server'], $slave['user'], $slave['password'], "dbname"); 

但这不起作用。如果我尝试单独连接这些从站,它就可以工作。但不是当我在数组中声明它时。有没有一种简单的方法可以随机调用这些奴隶?请突出显示我的代码中的错误在哪里。我检查了网络上的几个链接,但它们使用函数和这个关键字来进行数据库调用。

如果您需要更多信息,请告诉我。

提前致谢。

【问题讨论】:

  • 我不会将基于 time() 的选择称为随机选择。如果我没记错的话,你所有的脚本都会一次连接到同一个服务器
  • 不工作意味着我得到一个空白屏幕。发现也有语法错误。感谢您的回复。

标签: php mysql database scripting mysqli


【解决方案1】:
$slave = $slaves[array_rand($slaves)];
$con = mysqli_connect($slave['server'], $slave['user'], $slave['password'], "dbname");

【讨论】:

  • 下次发帖前请先阅读说明书。 array_rand 返回随机索引,而不是值。
【解决方案2】:

您应该使用array_rand 函数从数组中获取随机值。用这个修改检查一下。

你忘记将数据库名称传递给连接函数。

【讨论】:

  • 感谢您的回复。使用array_rand,它的工作。数据库名称已手动提供“dbname”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 2012-09-09
  • 2011-03-18
  • 1970-01-01
相关资源
最近更新 更多