Почему я не могут запросить базу данных от разветвленного ребенка в Perl?

Не возможный в целом, если Вы не используете некоторый внешний сервис.

5
задан 16 revs, 2 users 84% 28 July 2009 в 12:02
поделиться

2 ответа

Когда вы разделяете соединения с базой данных между процессами (это то, что вы делаете с вилкой), вам необходимо убедиться, что один процесс не закройте его из-под другого. Поскольку соединения также являются переменными, когда интерпретатор Perl завершает работу, он вызывает метод DESTROY этого объекта, который в этом случае закроет соединение.

Итак, если кто-либо из дочерних элементов закроет соединение с базой данных (что произойдет, когда они finish и shutdown) он убьет его из-под родительского процесса. Способ предотвратить это - установить InactiveDestroy в значение true в родительском процессе до вилки, а затем явно закрыть соединение в родительском процессе, когда это будет сделано.

https: // metacpan. org / pod / DBI # InactiveDestroy

9
ответ дан 14 December 2019 в 01:13
поделиться

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

Неважно ... Я прочитал остальную часть кода.

0
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: