Bonjour,
Je cherche à savoir s'il est possible de réaliser des objet static singloton en php5
Lorsque je code des objet static en java ou en c#, mes singlotons résidant dans la mémoire de mon serveur d'applications ( Tomcat & IIS) et Je peux récupérer mon instance unique du singloton entre mes différentes classes.
Alors il n'existe pas de serveur d'applications php à proprement parler (enfin je pense)
donc du coup ma question : Est-il possible d'instancier un singloton que l'on pourrait récupérer dans des scripts différents que le script initiateur.
Et plus généralement, Quel est l'étendu du contexte lorsque je suis dans un script ? Puis-je accéder à mes objets déclarés ailleurs...
Ceci étant dans le but de garder un objet static en mémoire afin de charger automatiquement des modifications sur un fichier ou bien réaliser un traitement toutes les 30 seconds sur ce fichier. Les solutions de rechargement toutes les 5 minutes ne me conviennent pas
Merci d'avance.
Bozo
# porté des variables
Posté par or zax . Évalué à 5.
Par contre la portée d'une variable d'un objet ou d'une ressource est l'exécution du script lui même.
Mais tu peux utiliser les mécanismes de mémoires partagés avec les mécanismes IPC.
De plus tu peux demander à ce qu'un script n'arrête pas son exécution à la fin de la connexion, donc qu'il continue à s'exécuter en mémoire.
La commande wait permet de faire du timer.
Tu peux désactiver au niveau du code PHP la notion de timeout d'exécution.
Donc tu peux faire ce que tu décris, sans utiliser la notion de singleton j'avais écris une mailing list avec un système de spool et de régulation d'envoi en PHP, ça marchait super.
[^] # Re: porté des variables
Posté par john Smith (site web personnel) . Évalué à 1.
Merci beaucoup pour ta réponse
Bozo
[^] # Re: porté des variables
Posté par or zax . Évalué à 4.
Par contre est-ce que c'est une copie ou une référence qui est passé, je ne sais pas.
En partant dans le cas qui ne nous arrange pas, si c'est une copie, il va falloir que tu utilises des sémaphores dans les méthodes de ton objet, et que tu mettes à jour l'objet partagé quand tu le modifies avec shm_put_var
[^] # Re: porté des variables
Posté par Gyro Gearllose . Évalué à 2.
Mais c'est bigrement intéressant ce que vous racontez !
Une question me brûle les lèvres : "A quoi ça sert ?". J'ai envie de croire que ça permettrait - idéalement - de coder en php une sorte de serveur par client (connexion d'un navigateur) qui conserverait en mémoire son contexte d'une requête à une autre.
Si c'est ça, j'aimerai bien obtenir de l'un d'entre vous au choix :
soit des explications plus claires (avec un exemple, ce serait le pied), soit des liens clairs et explicites vers le sujet (j'ai vaguement cherché, mais je n'ai rien obtenu de mon niveau ; en clair, je n'ai rien compris à ce que j'ai lu !).
Si j'ai mal interprété vos propos, oubliez ce commentaire, sinon, merci à vous d'avoir suscité mon intérêt pour cette problématique qui me sort de mon ordinaire !
[^] # Re: porté des variables
Posté par or zax . Évalué à 2.
[^] # Re: porté des variables
Posté par fabien . Évalué à 1.
on peut faire celà ?
ca m'interresse, vous avez des info a ce propos ? quelle commande ?
merci.
[^] # Re: porté des variables
Posté par or zax . Évalué à 2.
demande à php à la fin de la connexion d'ignorer cette déconnexion et de rester dans l'état actif
set_time_limit ( 0 ), enlève ton timeout pour l'exécution
sleep ( 3 ) demande comme un wait en C de se mettre en attente au niveau système pendant 3 secondes.
C'est ce qui est un peu génial avec PHP, c'est que tu peux faire du système, dans certains cas, les fonctions ne sont pas disponibles sous windows, mais franchement ce n'est pas grave.
# Avec les sessions
Posté par Ptignome . Évalué à 1.
[^] # Re: Avec les sessions
Posté par john Smith (site web personnel) . Évalué à 0.
Mais le problème s'est que si mon objet contient une reférence sur une connection BDD ou une réference vers un fichier, ca ne va pas survivre à la sérialisation.....
Si je ressors mon objet 1 heure apres ma connection elle va etre dead :D
D'où l'interet de garder l'objet en vie, mais merci qd meme
[^] # Re: Avec les sessions
Posté par or zax . Évalué à 2.
Pour ce qui est des ressources en PHP, les connexions persistantes, si il n'y a pas d'activité, il y aura un timeout je pense (à vérifier), par contre si tu as un descripteur de fichier, là tu peux le garder ouvert en permanence si le script s'exécute en permanence et en jouant avec wait.
En fait ce qui serait génial, c'est de faire une classe générique utilisant les différents appels systèmes pour faire un singleton inter instance d'exécution, comme çà il n'y aurais plus qu'à l'hériter pour le réutiliser.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.