Ошибка "MySQL server has gone away"

slo_nik

Новичок
Ошибка "MySQL server has gone away"

Добрый день.
Есть скрипт, который парсит новостную rss и полученные данные записывает в базу данных в цикле.
На локальном и на моём местном хостинге скрипт работает нормально, но на хостинге заказчика при работе скрипта выдаётся mysql_errno() - 2006, mysql_error() - MySQL server has gone away
посмотрел немного в гугле, нашёл такую вешь, что есть переменная wait_timeout, посмотрев на своём хостинге, увидел, что значение переменной равно 28800, а на хостенге заказчика значение равно 30.Получается, что на хостинге заказчика, сервер ожидает активности соединения всего 30 секунд и потом закрывает его.
Можно ли самому, в скрипте выставить время ожидания или надо связываться с хостером?
 

fixxxer

К.О.
Партнер клуба
а ты pconnect случаем не используешь?

если так - не используй его.
 

slo_nik

Новичок
Благодарю всех откликнувшихся, проблему решил, пока всё работает.
В функцию mysql_connect() добавил ещё пару параметров, получилось так

mysql_connect(HOST,USER,PASSWORD,TRUE,MYSQL_CLIENT_INTERACTIVE) or die(............);

если что то не так, пожалуйста поправьте.
 

dimagolov

Новичок
Можно ли самому, в скрипте выставить время ожидания или надо связываться с хостером?
если бы ты не поленился поискать по ману на сайте мускля, то ты бы знал, что это настройка конфига mysqld. а можешь или нет ты ее сам поменять зависит от того, какой хостинг.

кстати, распространенная ошибка горе-оптимизаторов мускля. другое дело, что раз твой скрипт висит дольше 30 секунд, то с ним на 99% что-то не так.
 

slo_nik

Новичок
Автор оригинала: dimagolov
если бы ты не поленился поискать по ману на сайте мускля, то ты бы знал, что это настройка конфига mysqld. а можешь или нет ты ее сам поменять зависит от того, какой хостинг.

кстати, распространенная ошибка горе-оптимизаторов мускля. другое дело, что раз твой скрипт висит дольше 30 секунд, то с ним на 99% что-то не так.
скрипт парсит rss ленту, кроме того, что получает заголовок и дескрипшен, идёт переход по адресу новости и оттуда берётся остальная информация

чем не приемлемо моё решение проблемы?
 

dimagolov

Новичок
ну хотя-бы тем, что запрос к удаленному серверу может легко занять более 30 секунд и мускль все равно успеет отвалиться.
 

slo_nik

Новичок
Автор оригинала: dimagolov
ну хотя-бы тем, что запрос к удаленному серверу может легко занять более 30 секунд и мускль все равно успеет отвалиться.
на данном этапе он и так занимает более 30 секунд, поэтому и вылазит ошибка "MySQL server has gone away".
при константе MYSQL_CLIENT_INTERACTIVE ожидание составляет interactive_timeout, а это гораздо больше по времени(600), по крайней мере так показывает SHOW variables.

пробовал применить SET SESSION wait_timeout = XXX; , но ни чего не получилось, просто я ещё не до конца разобрался как это использовать. конечно же пороюсь в мануалах.

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

slo_nik

Новичок
Автор оригинала: dimagolov
PHP:
$time1= microtime();
.... // some code
$time2= microtime();
.... // some code
$time3= microtime();
не совсем понял Вас.
присваивается временная метка переменным, а вот что дальше?...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
расставь 100500 меток по файлу найди узкое место.
 

Вурдалак

Продвинутый новичок
slo_nik
Разность значений двух соседних меток даст приблизительное время выполнения куска кода.

P.S.
PHP:
microtime(true)
 

slo_nik

Новичок
Автор оригинала: Вурдалак
slo_nik
Разность значений двух соседних меток даст приблизительное время выполнения куска кода.

P.S.
PHP:
microtime(true)
как я понял, для каждого участка кода, который выполняет определённое действие в цикле, вывести время выполнения этого участка. в завершении вывести общее время выполнения скрипта. это даст возможность выявить проблемный участок?
 

dimagolov

Новичок
slo_nik, разве не очевидно, что время исполнения скрипта состоит из времени исполнения отдельных его частей? у тебя же php и один поток исполнения.
 

slo_nik

Новичок
Автор оригинала: dimagolov
slo_nik, разве не очевидно, что время исполнения скрипта состоит из времени исполнения отдельных его частей? у тебя же php и один поток исполнения.
это я как раз понимаю, я не могу понять зачем расставлять временные метки, засекать время отдельных частей кода?
метка в начале скрипта, метка в конце - получили время выполнения...
 

craz

Нестандартное звание
ну так оно вас и так не удовлетворяет оно большое, а какой участок во всем коде выполняется неприемлемо долго вы знаете?
 
Сверху