Discussion:
$SESSION et recuperation d'une variable "msql link persistent"
(trop ancien pour répondre)
p***@sriou.net
2008-10-08 14:41:48 UTC
Permalink
Bonjour,

Sur ma page A.php j'ai une variable connexion qui est de type "
ressource " et de value " ressource id='7' type='mysql link
persistent' ". C'est le résultat d'un mysql_pconnect.

Je voudrais pouvoir utiliser cette variable "connexion" dans une autre
page : B.php.
Je me suis dit que je pouvais utiliser pour cela la variable
$SESSION :
$_SESSION['connexion']=$connexion;

Or lorsque je suis dans ma page B.php (qui est appelée via un «
requete_ajax.open('GET','B.php',false); » toutes mes variables
$_SESSION sont présentes et à la bonne valeur, sauf
$_SESSION['connexion'] qui est à '0'.

Comment puis-je faire passer la bonne valeur de connexion calculée
dans la page A.php à la page B.php ?

D'avance merci.
CrazyCat
2008-10-08 16:26:59 UTC
Permalink
Post by p***@sriou.net
Comment puis-je faire passer la bonne valeur de connexion calculée
dans la page A.php à la page B.php ?
Tu n'en as pas besoin à priori, mais je dis peut-être une bétise.
Si je lis bien http://fr.php.net/mysql_pconnect , il est dit:

"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())."

Donc, si tu relances un mysql_pconnect(), il utilisera la même connexion.
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Olivier Miakinen
2008-10-08 23:28:06 UTC
Permalink
Post by CrazyCat
Post by p***@sriou.net
Comment puis-je faire passer la bonne valeur de connexion calculée
dans la page A.php à la page B.php ?
Tu n'en as pas besoin à priori, mais je dis peut-être une bétise.
À mon avis, non seulement il ou elle n'en a pas besoin, mais c'est
certainement une mauvaise idée de tenter de rendre une connexion
persistante.
Post by CrazyCat
[...]
Il y est dit :
<cit.>
Note: Notez que les connexions persistantes ne fonctionnent que si vous
utilisez PHP en version module.
</cit.>

Il y est dit aussi :
<cit.>
Avertissement
L'utilisation des connexions persistantes requiert des paramétrages
d'Apache et de MySQL pour vous assurer que vous n'atteindrez pas la
limite maximale de nombre de connexions simultanées autorisée par MySQL.
</cit.>

Enfin, il y a cette page à lire absolument :
http://fr.php.net/manual/fr/features.persistent-connections.php

En particulier :
<cit.>
Ceux qui ne sont pas rompus aux techniques des serveurs web et leur
distribution de la charge de travail se font parfois une fausse idée de
ces connexions persistantes. En particulier, les connexions persistantes
ne permettent pas l'ouverture de plusieurs sessions avec le même lien ;
elles ne permettent pas la réalisation de transactions efficaces et ne
font pas le café. En fait, pour être extrêmement clair sur le sujet, les
connexions persistantes ne vous donnent aucune fonctionnalité de plus
que les connexions non persistantes.
</cit.>
(Voir aussi toutes les limitations qui y sont décrites)

Bref... à moins que la connexion à la base de données soit beaucoup plus
longue que les requêtes qui sont faites une fois connecté, et que l'on
sois sûr de ne pas tomber dans l'une des limitations décrites, on dirait
bien qu'il ne faut *pas* utiliser les connexions persistantes.
Post by CrazyCat
Donc, si tu relances un mysql_pconnect(), il utilisera la même connexion.
- sauf si PHP n'est pas lancé en mode module ;
- sauf s'il y a plus de connexions simultanées que prévu ;
- sauf si un script utilise les verrous ou les transactions ;
- sauf s'il y a des erreurs dans un script ;
- sauf... ;
- sauf...

Pascal PONCET
2008-10-08 23:09:23 UTC
Permalink
Post by p***@sriou.net
$_SESSION['connexion']=$connexion;
...
$_SESSION['connexion'] qui est à '0'.
Bonjour,

Voici un extrait de la doc PHP, au chapitre des sessions :
(http://www.php.net/manual/fr/intro.session.php)

"AVERTISSEMENT
Quelques types de données ne peuvent pas être linéarisés pour être
stockés dans les sessions. Cela inclut les variables de type resource ou
les objets avec des références circulaires (i.e. objet qui passe une
référence à lui-même à un autre objet)."

Donc, je pense qu'il faut passer par les connexions persistantes, si le
serveur les prend en charge.
(http://www.php.net/manual/fr/features.persistent-connections.php)

Cordialement,
Pascal
Continuer la lecture sur narkive:
Loading...