У меня есть сценарий Perl, который считывает командный файл и перезапускает себя, если это необходимо, выполнив:рестарт скрипт многопоточный Perl и тесная связь MySQL
myscript.pl:
exec '/home/foo/bin/myscript.pl';
exit(0);
Теперь это работает штраф за исключением одного вопроса. В потоке, который читает командный файл, нет доступа к дескриптору DBI, который я использую. И по сравнению с несколькими перезапусками я, похоже, наращиваю количество открытых соединений mysql, пока не получаю страшную ошибку «Too Many Connections». Спецификация DBI говорит:
«Из-за этого (возможно, временного) ограничения вновь созданные потоки должны создавать свои собственные подключения к базе данных. Ручки не могут быть разделены между потоками».
Любой способ закрыть соединения или, возможно, другой способ перезапустить сценарий?
Вы понимаете, что 'exit (0)' достигается только в случае сбоя 'exec', правильно? –
Да, я это понимаю. Я также попытался заменить exec на систему. – ankimal
Где вы закрываете свои дескрипторы базы данных? –