En PHP, il n'y a pas une telle chose comme un objet "global" qui se trouve sur toutes les demandes. Dans un serveur Web Java, cela s'appellerait "magasin de données au niveau de l'application". En php, l'étendue de la portée "globale" (en utilisant le mot-clé global) est une requête unique. Maintenant, il y a aussi un magasin de données inter-sessions accessible via $ _SESSION, mais j'essaie de souligner qu'aucune variable dans php n'est vraiment "globale". Les valeurs individuelles émulent étant globales en étant stockées dans un fichier local ou dans une base de données, mais pour quelque chose comme une ressource, vous êtes coincé en le créant à chaque requête. Maintenant, au niveau de la requête, vous pouvez créer un Singleton qui retournera une ressource initialisée quelle que soit la portée dans la requête à partir de laquelle vous l'appelez, mais encore une fois, cette ressource ne persistera pas entre les requêtes. Je sais, il est un défaut de PHP, mais d'autre part, la rapidité et la stabilité des demandes individuelles aident à combler cette lacune. Après avoir relu votre question, j'ai réalisé que vous ne demandez peut-être pas une classe d'accès à la base de données singleton, mais plutôt quelque chose qui peut verrouiller votre base de données. Sur la base de ce que vous avez dit, il semble que la base de données puisse faire le verrouillage pour vous de toute façon. En d'autres termes, il ne vous permettra pas de vous connecter s'il y a déjà une autre connexion. Si tel est le cas, il semble que vous ayez 2 options: 1) laissez toutes vos pages se disputer pour la ressource, et échouez si elles ne l'obtiennent pas.
2) Créez un service de file d'attente qui peut accepter les requêtes, les exécuter, puis mettre en cache les résultats pour votre récupération ultérieure.
Par curiosité, êtes-vous autorisé à utiliser la connexion unique pour faire la réplication dans un magasin local? Si c'est le cas, vous pouvez vous intéresser à la réplication maître-maître. – Zak