Как выборочно запустить и завершить постоянный Apache::DBI для perl с клиента / браузера?

Этот вопрос связан с нашим веб-приложением, которое использует perl, apache, Apache::DBI и базу данных (MySQL, SQLite или что-либо еще).

Мы знаем, что Apache:: DBI используется для создания постоянных соединений с БД. Эти соединения живут в памяти с момента запуска веб-сервера Apache до момента его отключения.

Мой вопрос: возможно ли создавать постоянные соединения БД в любое произвольное время между началом и окончанием процесса Apache? Мы не хотим иметь постоянных соединений в течение всего процесса веб-сервера Apache.

Нам нужно создавать постоянные соединения в любое время после запуска веб-сервера Apache. И нам нужно завершить постоянные соединения в любое время до выключения веб-сервера Apache.

1 ответ

Я не совсем уверен, как это сделать. Но я бы предложил создать модуль, специально для запуска вашего соединения, его использования и завершения. Внутри него вы получаете ваше соединение в виде скаляра, скажем, $dbh, которое будет общим для всех, кто вызывает функции DBI (получение запроса к вашему серверу mysql).


package myBDDConnection;
use DBI;
our @EXPORT_OK = qw(&Query);

our $dbh = Connect();

sub Connect(){
my $dbh = DBI->connect(...);
...
return $dbh;
}
sub Query() {
 if(!$dbh) {$dbh=Connect()}
  //then perform query
}

sub Close(){
 $dbh->close() //or finish, i'm not sure
}

затем в других ваших модулях вы импортируете myBDDConnection и выполняете запросы через функцию Query из предыдущего модуля.

Другие вопросы по тегам