2011-12-09 4 views
4

J'utilise le motif de conception singleton dans une application PHP pour créer une connexion à une base de données et sélectionner la base de données. J'utilise cette instance plusieurs fois dans l'application pour les opérations CRUD.Singleton design en PHP

Y a-t-il un problème si mon application accède à la base de données sur plusieurs threads, comme obtenir des résultats non fiables?

L'instance créée par session ou pour tous les threads?

+1

PHP n'est pas multithread. Oh et les singletons sont mauvais ;-) – JRL

+0

Les singletons ne servent à rien en PHP. – NikiC

+0

@NikiC Je les utilise fréquemment pour éviter '$ _GLOBALS'. – Ross

Répondre

7

Il n'y a pas de fils en PHP. Chaque demande commence à partir de zéro; les objets et les ressources ne sont pas partagés.

5

Sauf si vous avez une configuration bizarre de Frankenstein, toutes les requêtes traitées par php sont indépendantes et ne partagent rien. Par conséquent, l'instance singleton est par requête (je pense que c'est ce que vous appelez thread).

Donc, vous ne devriez pas avoir à vous soucier de l'utilisateur A quelque chose réception qui était destiné à l'utilisateur B.

+0

+1 pour la conscience de Frankenstein (bien que les réponses no-threads sont correctes) – rdlowrey

+0

Iam pensée thread est l'utilisateur, pas la demande –

+0

si l'instance singleton est par demande, pourquoi nous sommes create.pls me dire –

3

PHP est mono-thread. Chaque fois qu'un script PHP est exécuté, il part de zéro. Les objets que vous créez dans le script sont créés à chaque fois.

0

Il ne devrait pas y avoir de problèmes avec le multithreading car PHP n'est pas multithread.

+0

Il n'a pas demandé comment implémenter un singleton. – middus

+0

Et je n'ai pas expliqué comment mettre en œuvre un Singleton, l'article explique un problème concernant Multithread Singleton, que j'ai trouvé interessant pour l'OP. – CloudyMarble

+0

L'article est appelé "Implémentation de Singleton en C#" et, par exemple, explique des singletons multithread en utilisant la fonctionnalité (lock et al.) Que php n'a même pas. À part les mots «singleton» et «thread», cela n'a rien à voir avec le problème de l'OP. – middus