connexion persistante = connexion partagée ?

connexion persistante = connexion partagée ? - SQL/NoSQL - Programmation

Marsh Posté le 22-02-2012 à 09:40:40    

Bonjour tout le monde,
 
Je viens de découvrir les connexions persistantes pendant une formation MySQL. Le formateur nous a expliqué que les connexions persistantes, une fois ouvertes, sont partagées par tous les utilisateurs.
 
Il nous expliquait donc que dans le cas d'un last_insert_id on ne pouvait être sûr que l'id récupéré est bien le notre. Il pourrait très bien être un id insérer par un collègue vu que l'on partage la connexion.
 
Comme ce formateur c'est déjà planté quelques fois pendant cette formation j'aurais aimé une confirmation sur le sujet.
 
Thx

Reply

Marsh Posté le 22-02-2012 à 09:40:40   

Reply

Marsh Posté le 22-02-2012 à 17:55:50    

Heu en principe, mais je m'avance peut-être car je ne suis pas expert MySQL, une connexion persistance ça veut dire que tu gardes la même connexion même quand ton processus (PHP je pense dans ton cas je pense) est coupé.
 
I.e. le client MySQL se charge de garder la connexion active et opérationnelle.
 
Par contre, jamais de la vie (et même dans des mécanismes de pool de connexion côté serveur dans d'autres SGBD) tu partages ta session avec quelqu'un d'autre. Ca va à l'encontre du modèle relationnel car tu ne peux alors plus assuré la cohérence des données à chacun (quid des commit/rollback :??:).
 
Après la doc. de MySQL ne laisse pas paraitre un quelconque doute a propos de la pertinence de last_insert_id() : http://dev.mysql.com/doc/refman/5. [...] ue-id.html
 
Ou alors le formateur s'est mal exprimé. :??:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 22-02-2012 à 18:22:26    

Non non, je lui ai posé la question avec argumentations à la clé mais il n'en démordait pas. Mais je me méfiais quand même de sa réponse donc voilà..
 
Vous confirmez mes soupçons, merci pour votre réponse.

Reply

Marsh Posté le 22-02-2012 à 19:12:08    

+1 avec MEI
La connexion est persistante dans le sens où un script qui s'exécute récupèrera la connexion utilisée par un précédent. Mais celui-ci est terminé.
A chaque instant, il n'y a qu'un seul script qui utilise la connexion, donc pas de souci avec le last_insert_id :)


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 24-02-2012 à 08:47:43    

Re!
 
On vient de m'envoyer un lien qui explique le contraire me semble t-il  : http://www.php.net/manual/fr/funct [...] onnect.php
 

Citation :

mysql_pconnect() se comporte exactement comme mysql_connect(), mais [...] à la différence majeure :
 
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.


 
Donc tous les utilisateurs utilisant les mêmes identifiants partagent la même connexion non?

Reply

Marsh Posté le 24-02-2012 à 09:10:36    

SV_LVH a écrit :

Re!
 
On vient de m'envoyer un lien qui explique le contraire me semble t-il  : http://www.php.net/manual/fr/funct [...] onnect.php
 

Citation :

mysql_pconnect() se comporte exactement comme mysql_connect(), mais [...] à la différence majeure :
 
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.


 
Donc tous les utilisateurs utilisant les mêmes identifiants partagent la même connexion non?


Oui mais tu es point de vue PHP, i.e. forcement dans ton script PHP propre.
 
Point de vue MySQL, elle aura une connexion par IP/user/password (voir plusieurs suivant comment c'est implémenté en détail... sous Oracle c'est une connexion par thread Apache).


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed