2011-03-28 3 views
2

Combien de temps dure l'instance d'une classe, objet, en PHP. Est-il limité au script en cours ou va-t-il durer une session? Si cela dure pour une session, est-ce que le script PHP a démarré la session?Combien de temps dure une instance d'une classe PHP?

Une question simple mais cela me fait une grande différence car cela signifie que les données utilisateur survivront sur le serveur et n'auront pas besoin d'être stockées dans la variable de session. D'où affectant certains principes fondamentaux de mon design.

Merci Colin

Répondre

-1
+0

On pourrait donc dire cette question est un double et doit être fermé. – Tony

+0

Eh bien, pas vraiment un doublon, c'est juste une partie d'un autre qui a été couvert. – Spyros

+0

J'ai vu cette question de fil et ma conclusion était, il pourrait survivre à la session. Je pense qu'il pourrait être plus facile de stocker des variables dans le tableau de session. Cela semble plus solide et fiable. –

3

la question ne fait pas partie vraiment POO, mais à un comportement PHP en général

Toutes les données PHP est- aller nulle part ainsi que le script PHP lui-même.

L'exécution des scripts PHP est atomique. Ce n'est pas comme une application de bureau tournant constamment dans votre navigateur, et même pas un démon avec une connexion persistante à votre application de bureau. C'est plus comme un utilitaire de ligne de commande - faire son travail et sortir. C'est pourquoi l'utilisation d'un stockage externe, tel qu'un fichier ou une base de données, est nécessaire. Mais bien sûr, vous pouvez enregistrer uniquement des chaînes, pas des instances de variables ou quoi que ce soit de ce genre. Cordes seulement.

0

Cela dépend de la façon dont PHP est configuré. Si PHP est configuré en CGI, les instances seraient perdues à chaque invocation. PHP serait invoqué pour chaque requête http.

Si PHP est configuré en tant que module, il y aura plusieurs processus traitant les requêtes PHP. Ainsi, l'instance survivrait dans ce processus particulier. Mais les demandes suivantes peuvent être traitées par un processus différent.

Si vous avez besoin d'une instance de classe pour survivre, vous devrez la sérialiser et la stocker dans une base de données ou un fichier. Si cette information est transitoire (ou stockée ailleurs), vous pouvez la stocker (la sérariser) en session. Un tel exemple est le nom complet de l'utilisateur qui peut être requis pour chaque requête http, de sorte qu'il peut être lu une fois dans la base de données puis stocké en session.

Exemple de stockage des instances de classe en session: http://www.talkphp.com/advanced-php-programming/3407-storing-class-instance-into-session.html

Questions connexes