0

我的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连接是否还活着,如果图像处理时间超过5s,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()
return "mysql server has gone away"

有人可以帮助我吗?

提前致谢。

4

2 回答 2

0

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

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

等等

于 2010-08-19T13:39:58.430 回答
0

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

mysql_close()

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

于 2010-08-19T13:45:31.247 回答