Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBI::mysql и fork'и, Error: MySQL server has gone away 
:(
    Опции темы
Ramirez
Дата 22.8.2005, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



День добрый! До этого не приходилось связываться с форками, но вот пришлось. Скрипт использует, DBI::mysql. И вот что мне выдает: MySQL server has gone away.


Содержание примерно такое:
Код

#!/usr/bin/perl

use DBI;

our $DBH = DBI->connect($DSN,"user","pass",{ RaiseError=>0,AutoCommit=>1 }) or die "Can't connect to database"; 

.........

unless($child = fork) {                                                                                                             
        print "(pid $$)\n";                                                                                                         
        while(1) {                                                                                                                  
            my %msg = SQL->buildHash("SELECT icq,message FROM events WHERE status = 0",$DBH);                                       
            SQL->write("UPDATE events SET status = 1 WHERE status = 0",$DBH) if %msg;                                               
            foreach (keys %msg) {                                                                                                   
                send_text_message($_, $msg{$_});                                                                                    
            }                                                                                                                       
            driver_executor();                                                                                                      
            sleep 1;                                                                                                                
        }                                                                                                                           
}  


Я так понимаю, где-то теряется идентифткатор соединения. Есть какие-то тонкости при использовании форков?

Спасибо.
PM ICQ   Вверх
Ivan Kolesnikov
Дата 23.8.2005, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 9.3.2005
Где: г. Новокузнецк

Репутация: 2
Всего: 6



Посмотрев документацию на DBI я наткнулся на одну опцию при коннекте: InactiveDestroy
Цитата

The C<InactiveDestroy> attribute can be used to disable the I<database engine> related
effect of DESTROYing a handle (which would normally close a prepared
statement or disconnect from the database etc).

For a database handle, this attribute does not disable an I<explicit>
call to the disconnect method, only the implicit call from DESTROY.

The default value, false, means that a handle will be automatically
destroyed when it passes out of scope.  A true value disables automatic
destruction. (Think of the name as meaning 'inactive the DESTROY method'.)

This attribute is specifically designed for use in Unix applications
that "fork" child processes. Either the parent or the child process,
but not both, should set C<InactiveDestroy> on all their shared handles.
Note that some databases, including Oracle, don't support passing a
database connection across a fork.

Может быть поможет, сам проверить не могу, так как база только Oracle, а про него тут ясно написано smile
--------------------
PM MAIL ICQ   Вверх
Ramirez
Дата 22.9.2005, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Да, действительно дело было в этом параметре. Респект =)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.