нужна помощь с подключением mysql в php - PullRequest
0 голосов
/ 19 августа 2010

У меня проблема с подключением mysql.

У меня есть php-скрипт, который загружает фото, этот скрипт делает это:

<code>
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 еще живым после обработки изображения, и соединение mysql прервалось, если время обработки изображения превышает 5 с.

Я добавил этот код после обработки изображения (шаг 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 голосов
/ 19 августа 2010

сначала попробуйте увеличить время ожидания, затем закройте соединение после шага 4

mysql_close()

зачем увеличивать время ожидания? потому что обработка изображения определенно занимает более 5 секунд, поэтому возникает эта проблема!

0 голосов
/ 19 августа 2010

Цитата из http://dev.mysql.com/doc/refman/5.0/en/gone-away.html:

Наиболее распространенная причина, по которой сервер MySQL исчез, состоит в том, что сервер отключил тайм-аут и закрыл соединение.
[...]
Некоторые другие распространенные причины исчезновения ошибки на сервере MySQL:
* Вы (или администратор БД) уничтожили запущенный поток с помощью оператора KILL или команды уничтожения mysqladmin.
* Вы пытались запуститьзапрос после закрытия соединения с сервером.Это указывает на логическую ошибку в приложении, которая должна быть исправлена.
* Клиентское приложение, запущенное на другом хосте, не имеет необходимых прав для подключения к серверу MySQL с этого хоста.
* Вы получили тайм-аут отсоединение TCP / IP на стороне клиента.Это может произойти, если вы использовали команды: mysql_options (..., MYSQL_OPT_READ_TIMEOUT, ...) или mysql_options (..., MYSQL_OPT_WRITE_TIMEOUT, ...).В этом случае увеличение времени ожидания может помочь решить проблему.
* Вы столкнулись с таймаутом на стороне сервера, и автоматическое переподключение на клиенте отключено (флаг переподключения в структуре MYSQL равен 0).
* Вы используете клиент Windows, и сервер разорвал соединение (вероятно, из-за истечения времени ожидания wait_timeout) перед выполнением команды.

и т. Д.

...