De l'utilité du singleton en PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : De l'utilité du singleton en PHP

par Calimero » 27 nov. 2007, 11:10

Ayant eu des besoins similaires dans le passé, je te propose d'utiliser un cache avec une délai d'expiration assez court (5 minutes par exemple) pour ne pas surcharger de connexions le serveur IRC. Ainsi un seul utilisateur par tranche de temps déclenchera la connexion, et les autres auront droit à l'information en cache.

C'est à mon avis la meilleure approche temps de dev/fonctionnalité pour ton besoin.

par eureka » 27 nov. 2007, 10:57

Non, je n'ai pas fait d'applet Java, seulement des jsp et des servlets, c'est à dire coté serveur comme le php. Mais je ne suis pas dogmatique et je prend conscience que je ne pourrai pas résoudre mon problème avec un singleton (ce serait trop simple). Je crois que la seule solution qui se présente à moi est d'écrire un démon php qui agirait en tant que proxy ou (bouncer)qui se connecterait une fois et une seule au serveur irc et qui recevrait ses requêtes de la page php via ajax sur un port dédié. Mais cette solution, c'est comme utiliser un 35 tonnes pour transporter une fourmi.

Si vous en avez une plus simple, je suis preneur ...

Cordialement

par Sékiltoyai » 27 nov. 2007, 01:45

Tu as fais du jsp ou de l'applet java (la différence conceptuelle est je pense énorme…) ?

par eureka » 27 nov. 2007, 00:02

Merci pour tes liens AB :)

Mais il m'explique ce qu'est un Singleton et je crois que je le savais déjà car je le pratique tous les jours (mais en java).

Je crois que je me suis mal expliqué, j'en suis désolé ! Le mieux est que j'explique ce que je veux faire :

J'ai un forum auquel est associé un chat irc et je voudrais afficher sur la page d'index du forum, la liste des personnes connectés au chat. Pour cela il faut se connecter au serveur irc, lancer la commande /names récupérer la liste des pseudos et l'afficher. Je voudrais éviter de me connecter au serveur irc à chaque affichage de l'index (qqsoit l'utilisateur) car c'est trop long. En java, j'avais programmé un singleton qui n'est instancié qu'une fois et qui vit jusqu'à l'arrêt du serveur donc accessible par getInstance par tous les utilisateurs sans réinstanciation et sans besoin de sérialiser.

En PHP, je ne sais pas comment faire.

Voila !

par AB » 26 nov. 2007, 23:08

Dans quels cas on utilise un singleton dans un environnement web ?
Par exemple ce lien
http://www.journaldunet.com/developpeur ... ry-1.shtml

qui figure dans ce sujet
http://www.phpfrance.com/forums/voir_sujet-34403-15.php

par eureka » 26 nov. 2007, 21:45

Merci pour ta réponse rapide :)

Concernant APC, je suppose qu'il n'existe pas beaucoup d'hébergeur qui l'ont installé.

Quant à la session, elle est valable pour un utilisateur et ne répond donc pas à ma problèmatique de partage d'objet.

Dans quels cas on utilise un singleton dans un environnement web ?

par titerm » 26 nov. 2007, 21:35

APC, les sessions, la serialisation sur FS te permettent de gérer la persistance

De l'utilité du singleton en PHP

par eureka » 26 nov. 2007, 21:21

Bonjour,

Je viens du monde Java et j'essaie d'appliquer en PHP les principes de POO que j'utilise en Java. Mais je suis très décu du fonctionnement du Singleton dans un environnement Web. En effet la durée de vie du singleton est exactement égale à celle de l'exécution de la page web qui l'instancie et n'est donc pas partageable par plusieurs pages, ce qui enlève tout interêt à ce patron de conception dans un environnement web sans l'utilisation d'un serveur d'application.

Connaissez-vous un moyen de gérer la persistance et le partage d'objet en php dans un environnement web ?

Merci par avance pour vos réponses. :)

Cordialement