[Moscow.pm] Модули для поддержания соединения

Ilya Chesnokov chesnokov.ilya на gmail.com
Вт Сен 8 04:52:10 PDT 2015


8 сентября 2015 г., 0:03 пользователь Victor Efimov <victor на vsespb.ru> написал:
> Я думаю имелось ввиду несколько другое. Примеры это DBI и CPAN Redis.

Ну да. Хотя в целом про TCP keepalive тоже интересная тема.

> 1) Прежде чем послать данные в сокет сделать следующее:
>
>   if ($self->{pid} != $$) {
>     $self->connect;
>   }
>
> (код из Redis.pm)
>
> 2) В DESTROY, если он есть, делать деструкцию только если $self->{pid} == $$.
> Надо сказать, это нужно только в DBI, т.к. он в DESTROY посылает
> какие-то данные в сокет. В "обычных" клиентах не нужно. В Redis.pm
> нету.

В-общем, ключевой вопрос в том, можно ли использовать одно и то же
соединение в разных процессах, если я правильно понял.
Если нельзя, то первый подход используется, если нельзя, то второй -
не закрывать соединение в дочерних процессах, а только в родительском.

> 3) реконнект
>
> 8 сентября 2015 г., 5:36 пользователь Eugen Konkov <kes-kes на yandex.ru> написал:
>> Здравствуйте, Ilya.
>>
>> IC> Есть ли готовые модули для поддержания постоянного соединения с
>> IC> каким-либо сервером?
>> Обычное TCP соединение с keep-alive пакетами
>> http://habrahabr.ru/company/intersystems/blog/155565/
>> http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html
>>
>>>не закрывалось при уничтожении форка
>> Делаете управление соединениями в мастер процессе. Создали соединение или их pool и отдаёте fork'ам хендлы. Если будет один хендл, То нужно будер решить проблему, какому форку передавать пришедший ответ (Думаю будет проще если создавать хендл/fork)
>>
>> Вы писали 7 сентября 2015 г., 12:18:21:
>>
>> IC> Добрый день.
>>
>> IC> Есть ли готовые модули для поддержания постоянного соединения с
>> IC> каким-либо сервером? Нужно для того, например, чтобы инициализировать
>> IC> соединение при старте веб-приложения и повторно использовать в форках,
>> IC> при этом чтобы оно не закрывалось при уничтожении форка, ну и заново
>> IC> соединялось при необходимости.
>>
>> IC> В-общем, нужно что-то вроде той части DBI, которая отвечает за
>> IC> TCP-соединение, но без всего того, что связано непосредственно с
>> IC> базами данных.
>>
>> IC> Да, и еще интересно, есть ли что-то подобное отдельно для AnyEvent::Handle.
>>
>> IC> --
>> IC> Best regards,
>> IC> Ilya Chesnokov
>>
>>
>>
>> --
>> С уважением,
>>  Eugen                          mailto:kes-kes на yandex.ru
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org



-- 
Best regards,
Ilya Chesnokov


Подробная информация о списке рассылки Moscow-pm