我网站上的一个页面加载时间太长 - 大约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”。
所以我的问题是 - 为什么打开数据库需要这么长时间?请注意,因为我处于预生产阶段,所以数据库非常小。
答案 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
文件中。