php,mysql,打开数据库耗时太长

时间:2012-02-05 04:38:20

标签: php mysql

我网站上的一个页面加载时间太长 - 大约2秒钟。在整个代码中使用microtime之后,我已经解决了它需要很长时间的问题,并请求如何加快它的速度。

我用来查找时间的代码是

echo "<BR>3 - ".(microtime(true)-$startTime);  #How long it takes for this page to do
$sqldb=open_database();  #Open the database
echo "<BR>4 - ".(microtime(true)-$startTime);  #How long it takes for this page to do

我的结果是

3 - 5.1140758991241
4 - 6.1172299385071

因此我推断出打开数据库的功能需要1秒钟。 用于打开数据库的函数是

//This function is to open the database
function open_database() {
    //Now we will connect to the database
    $sqldb=mysql_connect($_SESSION['hostname'], $_SESSION['dbusername'], $_SESSION['password']) OR die ('Unable to connect to database! Please try again later.');
    mysql_select_db($_SESSION['dbname'], $sqldb);  #Select which database we wish to use - in this case the customer one

    if(empty($sqldb)) {  //If there is no database then we have an error - MASSIVE ERROR!
        header('Location:'.$_SESSION['web_site'].'/error.php');
        die();
    }
    return($sqldb);
}

请注意,在mysql_connect中使用了SESSION varibles,所以我只需要在更新到生产服务器时更改一个变量。主机名是预生产服务器上的“locaLhost”。

所以我的问题是 - 为什么打开数据库需要这么长时间?请注意,因为我处于预生产阶段,所以数据库非常小。

3 个答案:

答案 0 :(得分:2)

会话存储在文件系统中,从文件系统读取也需要时间。如果它们存储在php代码中,那么它们将立即可用于脚本。这可能是你问题的一部分。

让我提供一个可能的解决方案。创建2个新文件。

dbconfig.prod.php dbconfig.dev.php

将数据库配置信息放入每个文件中,以获得正确的环境。在dev服务器上符号链接dbconfig.dev.php到生产服务器上的dbconfig.php,象征性地将dbconfig.prod.php链接到dbconfig.php然后在你的版本控制中忽略dbconfig.php

现在您不必为数据库配置存储的会话做非标准的事情,它可以解决您的计时问题。虽然IMO 1秒钟不是很多额外的时间。

答案 1 :(得分:0)

为什么在世界上你会在会话变量中存储数据库凭据?这些应该在site.config文件中作为php变量或常量,并且您的脚本应该从那里加载它们。存在会话变量,以便您可以存储基于连接的变量,而不是存储服务器端配置信息。

答案 2 :(得分:0)

另一件事要看的是“ mysql_connect”,它可能表明PHP在解析(查找)mysql主机时遇到了困难。您使用的是IP地址,get()还是主机名? (使用PHP连接到数据库时)如果是主机名,请尝试将IP添加到您的localhost文件中。