Как выборочно запустить и завершить постоянный 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 из предыдущего модуля.