2010-03-03 24 views
3

Je voudrais connaître la représentation de champ statique (classe) dans l'interpréteur PHP. Par exemple, lorsque vous chargez une classe en Java, des champs statiques seront associés à cet objet Class; cela signifie que deux applications exécutant la même JVM (et le même chargeur de classe) auront une sorte de variable globale partagée;)Accélérateurs PHP et champs statiques

Je me demande simplement, si j'utilise une sorte de cache PHP/d'opcode, qu'est-ce que c'est vraiment caché? Est-ce juste un bytecode compilé, ou un morceau d'état VM (responsable du stockage des objets de classe)?

C'est parce que j'ai peur des champs statiques/objets singleton partage entre les requêtes, etc.

PS: Je suis vraiment un débutant PHP, donc je suis désolé si la question est trop stupide:

Répondre

4

Un cache d'opcode ne changera rien: chaque script PHP est exécuté par son propre processus (ou thread), isolé des autres.

Un cache opcode seulement opcodes cache (l'équivalent PHP du bytecode JAVA), et il ne stocke pas liés à l'exécution actuelle du script - dire aucune sorte de « VM état ».

Cela signifie que vos variables static existeront dans une version pour chaque exécution de votre script PHP, même si ce script est exécuté plusieurs fois en parallèle; et l'utilisation ou non d'un cache d'opcode ne changera rien.

+0

Merci beaucoup, je suis soulagé maintenant :) – Bubba88

+0

De rien :-) * (J'ajouterais que si la mise en cache de l'opcode modifiait quelque chose d'aussi important, ce serait un problème majeur) * –