2010-06-03 104 views
0

我可以问一个基本问题。为什么当我尝试在php中使用无效的数据库信息(比如不正确的数据库名称)创建一个新的mysqli对象时,它是否不会无状态返回错误?我通常用Java编写服务器的东西,而这样的事情会在20秒左右之后抛出一个错误的海峡,而不是20秒左右。PHP mysqli错误返回时间

例如

$conn = new mysqli($host, $username, $password, $database); 

谢谢!

+0

指定不存在的数据库时,20秒延迟肯定不正常。你能显示确切的错误信息吗? – 2010-06-03 14:04:39

回答

2

如果主机,用户名和密码都正确,则会立即返回不正确的数据库名称。但是,如果主机名称不正确,则连接尝试将首先超时。不正确的用户名和密码错误也会立即返回。

+0

谢谢你。主机名称也不正确。谢谢你帮我理解一点:) – Dori 2010-06-03 14:14:34

0

这是因为请求无效,因为重要凭证丢失或不正确;或者数据库不可访问。

如果主机名,用户名和/或密码不正确,则SQL请求在返回之前必须超时。我相信PHP中的标准超时时间设置为20秒,因此它与您遇到的情况非常匹配。虽然它会而不是发生无效的数据库名称,因为这只会使请求立即失败。

要检查错误,您可以拨打mysql_error()以获取PHP的错误说明,或mysql_errno()以获取错误代码。标准超时时间可以通过编辑php.ini文件(如果您有权访问它)来设置为较低的值;将值设为mysql.connect_timeout(即在php.ini中)以任意超时时间(以秒为单位)。在正常情况下,5秒或更长的超时时间很好,甚至可能不必要的大。