OVH Cloud OVH Cloud

mod_perl, Apache et DBI

5 réponses
Avatar
Srand
Bonjour,

J'ai lu la documentation de Apache::DBI qui permet d'avoir une
connexion a une base qui soit persistante par processus. Cependant, y a
t il un moyen de ne pas avoir a reiterer la creation des statements
handles ?
Ceci afin de ne pas faire X prepare par page. J'ajoute qu'il n'y a
qu'une page qui est appelee x fois et qui se connecte a la base pour
effectuer certaines actions selon le contenu du POST qu'elle recoit.

Merci.

5 réponses

Avatar
espie
In article ,
Srand wrote:
Bonjour,

J'ai lu la documentation de Apache::DBI qui permet d'avoir une
connexion a une base qui soit persistante par processus. Cependant, y a
t il un moyen de ne pas avoir a reiterer la creation des statements
handles ?
Ceci afin de ne pas faire X prepare par page. J'ajoute qu'il n'y a
qu'une page qui est appelee x fois et qui se connecte a la base pour
effectuer certaines actions selon le contenu du POST qu'elle recoit.


Ben, un petit prepare_cached, selon le module de DBI, a tendance a
faire des merveilles...

Avatar
Scetbon Cyril
In article ,
Srand wrote:

Bonjour,

J'ai lu la documentation de Apache::DBI qui permet d'avoir une
connexion a une base qui soit persistante par processus. Cependant, y a
t il un moyen de ne pas avoir a reiterer la creation des statements
handles ?
Ceci afin de ne pas faire X prepare par page. J'ajoute qu'il n'y a
qu'une page qui est appelee x fois et qui se connecte a la base pour
effectuer certaines actions selon le contenu du POST qu'elle recoit.



Ben, un petit prepare_cached, selon le module de DBI, a tendance a
faire des merveilles...

Le module Apache:DBI ne parle pas de prepare_cached.

Ce qui signifie que si j'appelle prepare_cached pour des pages
differentes ca revient a appeler prepare car les anciens prepare ont ete
perdus


Avatar
Mark Clements
Scetbon Cyril wrote:
In article ,
Srand wrote:

Bonjour,

J'ai lu la documentation de Apache::DBI qui permet d'avoir une
connexion a une base qui soit persistante par processus. Cependant, y a
t il un moyen de ne pas avoir a reiterer la creation des statements
handles ?
Ceci afin de ne pas faire X prepare par page. J'ajoute qu'il n'y a
qu'une page qui est appelee x fois et qui se connecte a la base pour
effectuer certaines actions selon le contenu du POST qu'elle recoit.



Ben, un petit prepare_cached, selon le module de DBI, a tendance a
faire des merveilles...

Le module Apache:DBI ne parle pas de prepare_cached.

Ce qui signifie que si j'appelle prepare_cached pour des pages
differentes ca revient a appeler prepare car les anciens prepare ont ete
perdus


Selon du doc, DBI maintient une cache de prepared statements.
Apache::DBI maintient une cache de connexions: je suppose que les deux
marcherait très bien ensemble.

A mon avis, ce n'est pas le peine de t'inquieter à ce probleme. Utilise
Benchmark::Timer (per exemple) pour voir exactement ou tes programmes
prennent le plupart de leur temps, et fais les efforts d'optimisations là.

Mark



Avatar
Scetbon Cyril
Scetbon Cyril wrote:
In article ,
Srand wrote:

Bonjour,

J'ai lu la documentation de Apache::DBI qui permet d'avoir une
connexion a une base qui soit persistante par processus. Cependant,
y a
t il un moyen de ne pas avoir a reiterer la creation des statements
handles ?
Ceci afin de ne pas faire X prepare par page. J'ajoute qu'il n'y a
qu'une page qui est appelee x fois et qui se connecte a la base pour
effectuer certaines actions selon le contenu du POST qu'elle recoit.



Ben, un petit prepare_cached, selon le module de DBI, a tendance a
faire des merveilles...

Le module Apache:DBI ne parle pas de prepare_cached.

Ce qui signifie que si j'appelle prepare_cached pour des pages
differentes ca revient a appeler prepare car les anciens prepare ont
ete perdus


Selon du doc, DBI maintient une cache de prepared statements.
Apache::DBI maintient une cache de connexions: je suppose que les deux
marcherait très bien ensemble.

A mon avis, ce n'est pas le peine de t'inquieter à ce probleme.
Utilise Benchmark::Timer (per exemple) pour voir exactement ou tes
programmes prennent le plupart de leur temps, et fais les efforts
d'optimisations là.

Mark
Le probleme est que dans le 2nd appel de cette page le cache de DBI est

perdu et pas celui de Apache::DBI !!!




Avatar
Scetbon Cyril
Scetbon Cyril wrote:
In article ,
Srand wrote:

Bonjour,

J'ai lu la documentation de Apache::DBI qui permet d'avoir une
connexion a une base qui soit persistante par processus. Cependant,
y a
t il un moyen de ne pas avoir a reiterer la creation des statements
handles ?
Ceci afin de ne pas faire X prepare par page. J'ajoute qu'il n'y a
qu'une page qui est appelee x fois et qui se connecte a la base pour
effectuer certaines actions selon le contenu du POST qu'elle recoit.



Ben, un petit prepare_cached, selon le module de DBI, a tendance a
faire des merveilles...

Le module Apache:DBI ne parle pas de prepare_cached.

Ce qui signifie que si j'appelle prepare_cached pour des pages
differentes ca revient a appeler prepare car les anciens prepare ont
ete perdus


Selon du doc, DBI maintient une cache de prepared statements.
Apache::DBI maintient une cache de connexions: je suppose que les deux
marcherait très bien ensemble.

A mon avis, ce n'est pas le peine de t'inquieter à ce probleme.
Utilise Benchmark::Timer (per exemple) pour voir exactement ou tes
programmes prennent le plupart de leur temps, et fais les efforts
d'optimisations là.

Mark
Effectivement, en lisant le code de DBI je m'apercoit que prepare_cached

cache les statements dans $dbh qui est elle meme cachee par Apache::DBI.

Cool.

Merci.