2009-10-11 154 views
0

我有一个小的PHP框架,基本上只是加载控制器和视图。 在执行开始和结束时使用microtime(),大约0.004秒内加载一个空白页面。php mysql db连接速度很慢

这是“问题”。如果我执行以下操作:

$ link = @mysql_connect($ server,$ user,$ pass,$ link); @mysql_select_db($ database,$ link);

页面大约在0.500秒内加载。高达12500%的时间来渲染空白页面。

这是正常的还是我在做严重错误的地方...(我希望后者)。

编辑:有人可以说什么是一个正常的时间罚款只是连接到像上面的MySQL数据库。

+0

如果我是你,我不会使用错误抑制器,特别是当你在寻找错误时);然后,为什么你的连接中的$ link? – markus 2009-10-11 18:53:06

+0

该链接仅用于打开其他连接。但在这种情况下,它会被视为错误。 删除@ -sign什么都不做。 – Adergaard 2009-10-11 18:55:41

+0

你知道建立数据库连接需要多长时间吗?多久才能选择一个数据库?我的意思是在你加载一个空白页面之前,现在你正在加载一个页面,创建一个资源并将它用于查询。 – markus 2009-10-11 19:03:37

回答

2

Error suppression with @会减慢你的脚本。另外一个SQL连接依赖于服务器的速度。所以如果服务器响应速度慢,你的脚本执行会很慢。

+0

我想这就是它。 服务器可能就是那么慢地连接到那里。 我只是想确保我没有在这里认真搞笑。谢谢。 – Adergaard 2009-10-11 19:19:34

0

其实,我没有得到你想要做的$link变量。 $link = @mysql_connect($server,$user,$pass,$link);可能是错的,可能不这样做你想要的(即在你的例子没有),除非你有一个以上的链接到数据库(先进的东西)

the php.net documention states

new_link

如果第二个电话是 mysql_connect()与 相同的参数,没有新的链接将建立 建立,而是,链接 标识符已打开的链接 将被退回。该new_link 参数改变此行为 使得mysql_connect()总是打开 新的链接,即使mysql_connect() 用相同 参数之前调用。在SQL安全模式下,这个 参数被忽略。

在我的网络服务器,加载时间始终是约平均同一(4000微秒的第一时间和600微秒第二次)

半秒连接到MySQL数据库是有点慢但也不罕见。如果它在网络上的另一台服务器上存在负载,则可能是绝对正常的。

我不会太担心这个问题。

(哦,老问题!没关系,还是回复)

0

您是否尝试过验证数据的完整性?做一个修理表,并对所有表进行优化。我知道,有时当桌子腐败时,连接时间可能会花费大量时间/一起失败。

0

可能是域名解析缓慢的原因。

跳过名称解析

添加这my.cnf文件,然后重启mysqld。

如果您跳过-name-resolve,则不能在mysql中使用hostname作为用户权限。