0

我正在编写一个具有functions.php文件的应用程序,该文件是通过Ajax 访问的javascript 文件。目前我有每个函数连接到数据库,运行查询,然后关闭数据库。我知道必须有一种更有效的方法来做到这一点。我只想输入一次数据库凭据,然后让所有功能都使用它。最有效的方法是什么?我已经阅读了很多关于这个主题的答案,但它们都是不同的,我迷路了。只需指出我正确的方向:)

目前我的功能正在像这样打开数据库。

$db = new mysqli("hostname", "username", "password");
$db -> select_db("database name");

或者像这样

mysql_connect("hostname", "username", "password");
mysql_select_db('database name') or die( "Unable to select database");
4

2 回答 2

1

简单的答案是连接池。连接池是始终连接到数据库的连接池。您可以为连接数设置高水位线和低水位线。

当您的应用程序从池中请求连接时,它将使用其中一个空闲连接并重用它。这就是扩展数据库连接的方式。

您正在使用 PHP,因此请查看以下内容:

  1. http://www.oracle.com/technetwork/topics/php/php-scalability-ha-twp-128842.pdf
  2. http://php.net/manual/en/mysqlnd-ms.pooling.php

网上有很多关于这方面的信息。

于 2013-08-16T01:33:35.060 回答
0

您可以检查是否已设置数据库连接变量:

if (!isset($db)) {
    $db = new mysqli(...);
    $db->select_db("database_name");
}

和类似mysql_connect(它返回一个连接资源,所以你可以将它分配给一个变量,即使它是其他函数的可选参数)。

另一种方法是使用带有静态变量的函数:

function connect_db() {
    static $db = new mysqli(...);
    static $selected = $db->select_db("database_name");
    return $db;
}

第三种选择是在脚本开始时连接到数据库一次,而不是在每个函数中。然后要么传递$db给每个函数,要么使用global $db;.

于 2013-08-16T01:42:27.577 回答