Je suppose qu'un lien vers la dernière connexion ouverte est conservé quelque part en mémoire, pour faciliter les choses (car nous n'utilisons généralement qu'une seule connexion) .
En parcourant rapidement les sources de ext/mysql
:
_(Tous les numéros de ligne sont en php_mysql.c
-- la version des sources est un instantané aléatoire de PHP 5.3.2-dev datant d'il y a quelques semaines ; il est donc possible qu'elle ait un peu changé)._
- La fonction de l'espace utilisateur appelée
mysql_connect
semble correspondre à la fonction de niveau C appelée php_mysql_do_connect
(ligne 922)
- En
php_mysql_do_connect
appels de fonction php_mysql_set_default_link
(ligne 832)
- Pour mémoriser la dernière connexion ouverte
- Il existe également une fonction appelée
php_mysql_get_default_link
(ligne 908)
- Ce
php_mysql_get_default_link
est appelée par mysql_select_db
lorsqu'aucun lien ne lui est transmis (ligne 992)
Et php_mysql_set_default_link
l'appelle pour stocker le default_link
:
MySG(default_link) = id;
Ce MySG
étant une macro, définie comme suit _(en php_mysql_structs.h
)_ :
#ifdef ZTS
# define MySG(v) TSRMG(mysql_globals_id, zend_mysql_globals *, v)
#else
# define MySG(v) (mysql_globals.v)
#endif
Cela ressemble beaucoup à une variable globale pour moi ;-)
Si vous le souhaitez, vous pouvez consulter les sources vous-même : ext/mysql/php_mysql.c
y ext/mysql/php_mysql_structs.h
.
Comme je l'ai dit, il a probablement été modifié un peu depuis la version dans laquelle j'ai vérifié -- ce qui signifie que les numéros de ligne peuvent ne pas correspondre exactement ; mais les noms des fonctions sont assez faciles à comprendre, donc vous devriez être capable de retrouver ce qui appelle quoi et où :-)