HTMLpointHTMLpoint HTMLpoint.com


 Módulo Apache::DBI



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.


  Torna a inizio pagina