|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Nouveau Membre du Club
![]() Inscription : décembre 2003 Messages : 223 ![]() |
Salut tout le monde !
j'ai un problème avec mes connexions oracle, c tellement un truc de fou que je sais pas si je vais reussir a l'expliquer et si vous aller comprendre ... Je vais essayer d'etre clair ... En résumé, mon probleme et que j'ai 2 connexions oracle, et dans certains cas, les 2 connexions se melangent, on dirait que PHP perd les pédales ... Mais dans d'autre, ca fonctionne. J'ai fait un script de test, qui reprends le contexte de mon vrai script en simplifié ... Voici le fonctionnement : En debut de script, je me connecte a une base que nous appelons supervision, la connexion me retourne une variable que j'appelle : $c_client. Ensuite, j'ai un tableau qui contient des noms de projets (nous avons une base par projet). Dans une boucle for, je parcours ce tableau de projets. Je fais une 1ere requete sur la base supervision (requete sur la table d_product). - Ensuite, je fais une connexion sur le projet en cours qui me retourne une variable appelée $c_projet. - Ensuite, je fais une 2ème requete sur la base supervision. --> Cette requete plante : ociexecute(): OCIStmtExecute: ORA-00942: Table ou vue inexistante En effet, la table d_product existe sur la base supervision, mais pas sur la base du projet en cours. Conclusion : cela veut dire que les 2 connexions sont mélangées . J'ai passé 3h a debugger et a faire des tests hier, les résultats obtenus sont assez hallucinants ... 1er test (Test qui est decrit ci dessus) Code :
Le plus étrange, c que le bug est aleatoire, c a d qu'il ne plante pas tout le temps des le 1er passage dans la boucle. Il va meme parfois reussir a faire les 3 itérations. C fou !! 2ième test Dans ce test, j'initialise d'abord mes 2 connexions, en 1er une connexion a la supervision, en 2ieme, une connexion sur un projet. Ensuite seulement, je fais une requete sur le projet, et une requete sur la supervision. Code :
Ce test fonctionne ! Autrement dit, en faisant l'ordre Connexion - connexion - requete-requete, les 2 connexions ne se mélangent pas . 3ième test Ce test met en evidence la seul solution que j'ai trouvé, cad que je reinitialise ma connexion a la supervision apres la connexion sur le projet. (pour lui dire "et au fait, la supervision c ca !! Code :
Voila, j'ai regardé sur php.net, j'ai trouvé une fonction qui me paraissait interessante : OCIPLogon. C en fait une connexion persistante, je pensais que ca ferait l'affaire, donc dans ma fonction openOracle j'utilise OCIPLogon. --> pas mieux ... Voila, j'espere que vous avez compris mon probleme. Avez vous deja rencontré des pbs de connexions oracles en php, les avez vous resolues ? Je vous remercie d'avance pour vos réponses ! @+. |
||||||
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : avril 2006 Messages : 207 ![]() |
j'ai pas tout lu sur tes test
mais tu voudrai fournir des information a la base projet depuis la base supervision moi je te proposerai un truc tu te connecte a ta premiere base, tu y prend les renseignement et tu libere la base tes renseignement mis sous forme de variable sont gardé dans php ensuite tu ouvre la connection a l'autre base et tu y met tes informations oracle a toujour eu un défault au niveau des doubles connection j'ai souvent lu ça sur internet donc ça pourai venir de là l'erreur |
|
|
00
|
|
|
#3 | |||
|
Nouveau Membre du Club
![]() Inscription : décembre 2003 Messages : 223 ![]() |
Citation:
Nan. Dans une boucle, j'ai besoin d'information sur la base supervision, ensuite j'ai besoin d'infos sur la base projet. Ensuite, j'ai de nouveau besoin d'infos sur la base supervision (plus possible car la connexion est ecrasée par la connexion sur le projet). Cet ordre ne peut pas etre changé Citation:
Citation:
Tu aurais dex exemples, des liens ... stp ?? En tout cas merci ! |
|||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : avril 2006 Messages : 207 ![]() |
c'est des lien que j'ai trouvé par hazard j'avais pas fais très attentions cherche vir sur google mysql se detache de oracle ils racontaient que oracle avait acheter une partie de programme qdont se servait mysql et comment mysql avait ratrapé le tir puis ils ajoutaient que mysql avait l'avantage de supporter les connections multiple ce que oracle nacceptait pas ou quelquechose dans le genre.
oui donc j'avais mal compris ce que tu voulais. si tu fais une boucle c'est pareille tu peux faire varier la connection tu peux meme te creer des classes connections pour simplifier ton code et comme php fonctionne avec des variable ça ne poserai aucun problème ainsi tu tes informations et la connection reste propre. |
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : décembre 2003 Messages : 223 ![]() |
Yo !
Bon, ben nouvelles solution : A chaque fois qu'on a besoin d'une requete Ouvrir une connexion, faire la requete, et fermer la connexion dans l'ordre . Ceci donne l'algo suivant : Code :
@+ et merci ! |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com