Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 许多mysqli_connect()与许多mysqli_select_db()相比_Php_Mysql_Mysqli - Fatal编程技术网

Php 许多mysqli_connect()与许多mysqli_select_db()相比

Php 许多mysqli_connect()与许多mysqli_select_db()相比,php,mysql,mysqli,Php,Mysql,Mysqli,我想减少对数据库的查询数量。但我担心安装数据库连接比选择数据库更需要大量资源。你觉得怎么样 什么是正确的方法,为什么 第一条路 class db { private $link; function __construct() { $this->link = mysqli_connect('1.1.1.1', 'user', 'pass'); } function query($sql, $db) { mysqli_s

我想减少对数据库的查询数量。但我担心安装数据库连接比选择数据库更需要大量资源。你觉得怎么样

什么是正确的方法,为什么

第一条路

class db {

    private $link;

    function __construct() {

        $this->link = mysqli_connect('1.1.1.1', 'user', 'pass');
    }

    function query($sql, $db) {

        mysqli_select_db($this->link, $db);

        return mysqli_query($this->link, $sql);
    }
}

$db = new db();

for ($i = 0; $i < 100; $i++) {
    $db->query('SELECT * FROM `table`', 'databaseA');
    $db->query('SELECT * FROM `table`', 'databaseB');
    $db->query('SELECT * FROM `table`', 'databaseC');
}

//connections - 1
//queries - 2 x 3 x 100 = 600
class db {

    private $links;

    function query($sql, $db) {

        if ( ! isset($this->links[$db]))
            $this->links[$db] = mysqli_connect('1.1.1.1', 'user', 'pass', $db);

        return mysqli_query($this->links[$db], $sql);
    }
}

$db = new db();

for ($i = 0; $i < 100; $i++) {
    $db->query('SELECT * FROM `table`', 'databaseA');
    $db->query('SELECT * FROM `table`', 'databaseB');
    $db->query('SELECT * FROM `table`', 'databaseC');
}

//connections - 3
//queries - 1 x 3 x 100 = 300
classdb{
私人$link;
函数_u构造(){
$this->link=mysqli_connect('1.1.1.1','user','pass');
}
函数查询($sql,$db){
mysqli_select_db($this->link,$db);
返回mysqli_查询($this->link,$sql);
}
}
$db=新的db();
对于($i=0;$i<100;$i++){
$db->query('SELECT*FROM'table`,'databaseA');
$db->query('SELECT*FROM'table`,'databaseB');
$db->query('SELECT*FROM'table`,'databaseC');
}
//连接-1
//查询-2x3x100=600
第二条路

class db {

    private $link;

    function __construct() {

        $this->link = mysqli_connect('1.1.1.1', 'user', 'pass');
    }

    function query($sql, $db) {

        mysqli_select_db($this->link, $db);

        return mysqli_query($this->link, $sql);
    }
}

$db = new db();

for ($i = 0; $i < 100; $i++) {
    $db->query('SELECT * FROM `table`', 'databaseA');
    $db->query('SELECT * FROM `table`', 'databaseB');
    $db->query('SELECT * FROM `table`', 'databaseC');
}

//connections - 1
//queries - 2 x 3 x 100 = 600
class db {

    private $links;

    function query($sql, $db) {

        if ( ! isset($this->links[$db]))
            $this->links[$db] = mysqli_connect('1.1.1.1', 'user', 'pass', $db);

        return mysqli_query($this->links[$db], $sql);
    }
}

$db = new db();

for ($i = 0; $i < 100; $i++) {
    $db->query('SELECT * FROM `table`', 'databaseA');
    $db->query('SELECT * FROM `table`', 'databaseB');
    $db->query('SELECT * FROM `table`', 'databaseC');
}

//connections - 3
//queries - 1 x 3 x 100 = 300
classdb{
私人$links;
函数查询($sql,$db){
如果(!isset($this->links[$db]))
$this->links[$db]=mysqli_connect('1.1.1.1','user','pass',$db);
返回mysqli_查询($this->links[$db],$sql);
}
}
$db=新的db();
对于($i=0;$i<100;$i++){
$db->query('SELECT*FROM'table`,'databaseA');
$db->query('SELECT*FROM'table`,'databaseB');
$db->query('SELECT*FROM'table`,'databaseC');
}
//连接-3
//查询-1 x 3 x 100=300

我真的认为这在这里不起作用。这更多地取决于表中有多少数据。在同一台db服务器上设置3个不同的db句柄通常根本不是资源密集型的过程,如果是,我会担心整个服务器设置。你的第二种方法至少有误导性,但是-如果我错了,请纠正我-似乎表明了你的意图:删除一个,简单,易于实现的函数/方法调用,用于在发送查询之前选择数据库。不要给你的查询方法增加负担。使它成为构造函数中的参数或带有流体接口的Sperate方法(即,它返回自己的实例,以便您可以执行诸如$conn->selectdb(…)->prepare(…)或其他操作,但不要丢弃查询方法;-)VolkerK,在第二种方法中,如果以前没有安装数据库,我将建立与数据库的连接。您的方式conn->选择DB->准备发送2个请求作为第一种方法。