Форум: "Прочее";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c