Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.11.14;
Скачать: CL | DM;

Вниз

MySQL Server has gone away   Найти похожие ветки 

 
Polkin ©   (2010-08-05 11:20) [0]

Добрый день!
Есть php-скрипты-парсеры, которые запускаются по крону и с определенных сайтов забирают информацию...

Тайм-аут mysql-соединения на сервере - 3 минуты. Порой получается, что текст страницы скачивается более чем за 3 минуты, поэтому было придумано, перед каждым обращение к базе подключаться к ней (mysql_connect), а сразу после выполнения запроса - отключаться (mysql_close).
Два этих момента реализованы в виде функций, Выглядет примерно так

DBConnect ();
$query = "SELECT ...";
if ($result = mysql_db_query ($GLOBALS[db_name], $query)) {
 //...
}
DBClose ();

Так вот. Странно, но если пауза между запросами составила более 3 минут (судя по логам), то следующий запрос (даже после переподключения к базе) не выполняется, мотивируя это "MySQL server has gone away"..

Есть ли какие функции для проверки, активно mysql-соединие в данный момент или нет?


 
Anatoly Podgoretsky ©   (2010-08-05 11:42) [1]

Достал ты его.


 
Polkin ©   (2010-08-05 11:45) [2]


> Anatoly Podgoretsky ©   (05.08.10 11:42) [1]


Да уж не так, как он меня во всех 32 парсерах ;) Чо уже только не пробовал... Гдето прочитал, что, если в случае такой ошибки переподключиться, то все заработает - однако это ошибочное решение (


 
Омлет ©   (2010-08-05 12:12) [3]

Открывай перед запросов, закрывай после запроса.
Зачем держать его 3 минуты?


 
Polkin ©   (2010-08-05 12:41) [4]


> Омлет ©   (05.08.10 12:12) [3]


Да в том то и дело, что перед каждым запросом вызываю функцию
DBConnect (); в ней mysql_connect, а после запроса DBClose (); в ней mysql_close();

И все равно эта сволочь держит соединение.

даже так писал в функции отключения
if (!mysql_close () ) {  
 // писать в лог ошибку
}

но ошибка не пишется - вот прям хз где может быть ошибко (


 
Омлет ©   (2010-08-05 14:51) [5]

Обрати внимание на настройки php:

mysql.allow_persistent
mysql.connect_timeout


 
Омлет ©   (2010-08-05 15:15) [6]

http://www.mysql.ru/docs/man/Gone_away.html


 
Polkin ©   (2010-08-05 15:24) [7]

Да - возможно, что соединение закрыто - никак не могу понять почему, ведь перед самым запросом я делаю mysql_connect.

А вот что написано по сслыке "Если это получено в скрипте, то достаточно просто повторить запрос от клиента, чтобы соединение автоматически восстановилось." Какая-то туфта - не срабатывает ((


 
Омлет ©   (2010-08-05 15:49) [8]

Поставь:
mysql.allow_persistent = Off


 
Polkin ©   (2010-08-05 15:55) [9]

нет, так делать нельзя - портал огромный - он просто погибнет держать много соединений.

хммм....А если через ini_set ?


 
Омлет ©   (2010-08-05 15:59) [10]

allow_persistent = Off - это значит не держать соединения открытыми.

> А если через ini_set ?

Его и имел в виду.



Страницы: 1 вся ветка

Текущий архив: 2010.11.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1281828999
Гость
2010-08-15 03:36
2010.11.14
В каком параметре записана ширина стрелочки у TComboBox?


2-1282687644
Просто Я
2010-08-25 02:07
2010.11.14
Так что ж такое Лейбл


8-1180596214
Yert
2007-05-31 11:23
2010.11.14
Перекрытие SNDPlaySound


11-1226388197
Максим
2008-11-11 10:23
2010.11.14
Ошибка в последнем дистрибутиве KOL MCK!


10-1170009942
makaronX
2007-01-28 21:45
2010.11.14
разметить страницу в Excel