在php中需要帮助mysql连接

时间:2010-08-19 13:31:04

标签: mysql mysql-select-db

我遇到mysql连接问题。

我有一个上传照片的php脚本,这个脚本做到了:


1) mysql connection
2) check user rights for uploading photo (I use a sql query for this)
3) Image processing
4) sql query for insering photo data in database
我已将mysql连接超时设置为5秒。

如果图像处理时间小于5秒(mysql连接超时),一切都很好,否则我执行步骤4)时出错,错误是“Mysql服务器已经消失”。

所以,我检查了图像处理后mysql连接是否还活着,如果图像处理时间超过5秒,mysql连接就死了。

我在图像处理(步骤3)之后添加了这段代码


if(!mysql_ping($conn)){
$conn = mysql_connect('localhost', 'mysqluser', 'mypass');
$db   = mysql_select_db('mydb',$conn);
}

但它不起作用!这是我真正的问题。

var_dump($conn)
给出一个mysql资源链接,但

mysql_select_db('mydb',$conn)
返回FALSE,
mysql_error()
返回“mysql服务器已经消失”

有人可以帮助我吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

引自http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

  

MySQL服务器消失的最常见原因是服务器超时并关闭了连接   [...]
  MySQL服务器失败的其他一些常见原因是:
  *您(或数据库管理员)已使用KILL语句或mysqladmin kill命令终止正在运行的线程   *您在关闭与服务器的连接后尝试运行查询。这表示应该更正的应用程序中存在逻辑错误   *在不同主机上运行的客户端应用程序没有从该主机连接到MySQL服务器的必要权限   *您从客户端的TCP / IP连接获得超时。如果您一直在使用以下命令,则可能会发生这种情况:mysql_options(...,MYSQL_OPT_READ_TIMEOUT,...)或mysql_options(...,MYSQL_OPT_WRITE_TIMEOUT,...)。在这种情况下,增加超时可能有助于解决问题   *您在服务器端遇到超时,并且客户端中的自动重新连接被禁用(MYSQL结构中的重新连接标志等于0)。
  *您正在使用Windows客户端,并且在发出命令之前服务器已断开连接(可能是因为wait_timeout已过期)。

答案 1 :(得分:0)

首先尝试增加超时,然后在步骤4之后关闭连接

mysql_close()

为什么要增加超时?因为图像处理肯定需要超过5秒,所以会出现这个问题!