 |
|
 |

Se introduce este modulo en el presente presente tutorial ya que ofrece
una feature muy útil en las uniones (genéricas) Apache+database
SQL.
Este módulo que, como veremos en seguida, no tiene que incluirse en
nuestros script sino en los file de configuración del Apache mismo, permite
establecer conexiones continuas con una base de datos.
Todo se desarrolla con complejos métodos de verificación del servidor de la web en los
handles de la base de datos a través del comando "ping": sin querer entrar en
detalles sobre los métodos de funcionamiento, consideremos sólo que, si
el handle relativo a la última query hecha en la base de datos es válida,
vuelve dicho handle; sin embargo, si éste no está presente, se establece
una nueva conexión con la base de datos y el handle es almacenado para
futuros usos.
En este punto, puede resultar constructivo relacionar el método
"disconnect" con este módulo: en primer lugar, se podría pensar
que, utilizando "disconnect" para cerrar la conexión con la
base de datos, también Apache::DBI dejaría de mantener activa la conexión.
Y, en cambio, ¡no es así! No es necesario ni siquiera quitar el statement
"disconnect" porque Apache::DBI sabra bypasar este método; en algunos
casos, sin embargo, el uso conjunto de Apache::DBI y del método "disconnect"
puede provocar mensajes de error de DBI.pm, que, sin embargo, resultan
inocuos.
La única limitación del módulo es que cada petición a la base de datos
tiene que mantenerse activa, si bien los autores están trabajando para que
todas peticiones puedan compartirse. ¿Qué quiere decir todo
esto?
Si, por ejemplo, el usuario A, a través de una interface web (como puede ser
un form), le pide determinadas informaciones a una base de datos, y lo mismo (pero
con otros datos) hace un usuario B, cada una de estas peticiones
se tiene que gestionar individualmente si se quiere que ambas
query, la del usuario A y la del B, puedan compartir las
características del módulo Apache::DBI, compartiéndose de este modo los handles.
Por este motivo, se desaconseja usar este módulo con
bases de datos que tienen mucha carga de trabajo y, sobre todo, con muchas
conexiones diferentes (como podría ser un motor de búsqueda): las
peticiones serían muchísimas, y tenerlas activas supondría, además de un
dispendio, inútil.
Además, también por cuestiones de timeout, se desaconseja en algunos casos
no usar el módulo: muchas bases de datos desconectan a los usuarios en el
caso de que su conexión permanezca, después de cierto tiempo, inactiva, o
por problemas de conexión o porque no llegan datos de los usuarios para
la base de datos: mantener activas tales conexiones, como se puede entender
perfectamente, es inútilmente costoso.
Si, por el contrario, no tenéis problemas de este tipo, y las peticiones a vuestra
base de datos se hacen solamente desde un único UID, es posible y
útil emplear el módulo Apache::DBI.
Para hacer esto, habrá que modificar el file "httpd.conf"
presente en la ServerRoot de Apache añadiendo la línea
PerlModule Apache::DBI
que activará el módulo; además, esta llamada tiene que ser anterior a cualquier
otra eventual llamada dirigida a otros módulos que usan DBI.
Un simple file de ejemplo es startup.pl que, con mucha
probabilidad, estará localizado en diferentes directorios según el
sistema operativo que se utilice; de todos modos y en líneas generales, dicho file,
que viene con libapache-mod-perl, está en el directorio de documentación de
tales módulos, en el directorio "examples" (en Linux Debian startup.pl y en
/usr/share/doc/libapache-mod-perl/examples/startup.pl.
|
|
 |
|
 |