Hi,
svp je veux savoir s'il y a un module perl qui assure la connexion persistante a mysql sachant que ceci est possible avec php
thnxutilistation de mysql_pconnect
Hi,
svp je veux savoir s'il y a un module perl qui assure la connexion persistante a mysql sachant que ceci est possible avec php
thnxutilistation de mysql_pconnect
elle est persistante par default: c'est DBD::mysql qui gere la chose de maniere transparente. Tant que tu ne detruit pas ton $dbh la connexion reste active (sous reserve d'un timeout evidemment).
Par contre evidemment la chose est differente si tu es en CGI, puisque le processus meurt à la fin de chaque requete, et que tu dois donc réouvrire une nouvelle connexion. Dans ce cas il faut utiliser FastCGI ou mod_perl (equivalent à mod_php pour perl)
merci pospos
cela vrai dans un seul programme !! dans mon cas le numbre des programmes lance pour arriver a n>100 et ceci va genere le problem de too many connection et tous c program demande une connexion to mysql
1ere solution a ete d'utiliser mysql_pconnect mais avec phpje veux savoir si ceci est possible avec perl ?
![]()
je ne comprend pas ton problème
tu lance plusieurs scripts? Si oui alors c'est normal que chaque script ai besoin de sa propre connexion, il n'y a pas moyen de faire autrement (ni en php).
Si tout est dans le meme script alors il faut ouvrire une seule connexion et n'utiliser que celle la.
no c possible avec php
mysql_pconnect() se comporte exactement comme mysql_connect(), mais avec deux différences majeures :
Premièrement, lors de la connexion, la fonction essaie de trouver une connexion permanente déjà ouverte sur cet hôte, avec le même nom d'utilisateur et de mot de passe. Si une telle connexion est trouvée, son identifiant est retourné, sans ouvrir de nouvelle connexion.
Deuxièmement, la connexion au serveur MySQL ne sera pas terminée avec la fin du script. Au lieu de cela, le lien sera conservé pour un prochain accès (mysql_close() ne terminera pas une connexion persistante établie par mysql_pconnect()).
mais avec perl je sais pas !!!!![]()
Heu tu peut tenter une architecture " décentralisé "du genre
ton script ouvre un socket vers le "provider sql" en spécifiant le nom de la connexion (si ta plusieurs serveur sql), tu envoie aussi la requete a adresser , les données a prendre dans la dbd , et le type de retour de données[script] <---> [provider sql] <---> [mysql]
exemple :
tu sérialise le hash avec storable tu le balance a travers le séreau , tu désérialiez au niveau du provider tu effectue les opérations puis le provider sérialise sont hash et le rebalance sur la meme socket
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $requete = { 'conn_name' => 'serveur 1', 'conn_request' => 'la requete', 'conn_request_arg' => [$i,$m,$...] || undef, 'conn_return' => hash, array, single };![]()
Le provider pourrais renvoyer les données comme suit
on pourrais imaginer ajouter un argument au provider en lui disant de mettre la requete en cache
Code : Sélectionner tout - Visualiser dans une fenêtre à part $retour = { 'conn_return' => [], {}, string };
ou meme combien de temps la garder
Code : Sélectionner tout - Visualiser dans une fenêtre à part 'conn_cache' => y || n
Mais pour éviter un timeout du provider utiliser sous win32 (pas tester sous nux et autre), faire un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 'conn_refresh' => 600 s -> 10 mn
use PerlEx:BI (); qui garantie un connexion permanente au lieu de use DBI;
Edit : Chui pas cinglé juste maso![]()
Partager