2012-04-19 11 views
8

Recuerdo leer en php.net (aunque desafortunadamente parece que no puedo encontrar la página) que el intérprete PHP puede ejecutarse de diferentes formas: más comúnmente, cada vez que se solicita una página, una instancia del El intérprete PHP se crea, ejecuta su curso y luego se destruye, junto con toda la memoria asociada con esa llamada de página en particular. Aparentemente, también es posible permitir que toda la memoria permanezca, de modo que pueda usarse nuevamente en futuras llamadas a la página; tal como lo entendí, permitiendo esencialmente múltiples scripts PHP diferentes para acceder y modificar los mismos objetos, sin perderlos una vez que se ha completado el script.Objetos PHP que permanecen en la memoria

O al menos, así lo recuerdo. ¿Hay algo de cierto en esto? Si es así, ¿cómo lo configuraría?

+3

¿Qué estás tratando de resolver? ¿Cuál es el problema original? – zerkms

+8

Quizás la variable $ _SESSION es todo lo que necesita :) – jantimon

+0

Si desea conservar objetos en la memoria, almacénelos en memoria caché en APC o Memcached. Pero sí, tal vez solo estás buscando la funcionalidad de la sesión. – halfer

Respuesta

5

php no funciona de esa manera. se trata de correr y olvidar.

puede guardar los datos entre las peticiones de espacio de usuario compartida usando extensiones de memoria, por ejemplo: apc, XCache, memcached, etc.

o mediante el uso de la matriz de datos de la sesión después de llamar a session_start

$ _SESSION

no piense en scripts php como una aplicación java en por ejemplo gato. php estándar no fue diseñado para ese caso de uso. El compilador php funciona sobre la marcha.

+0

Encontré [session_name] (http://php.net/manual/en/function.session-name.php) para ser muy útil con esto. Cada archivo puede compartir el mismo session_name, y todos los datos relevantes pueden almacenarse en el objeto de sesión. De esta manera, puedo ejecutar un archivo init que configura el objeto de sesión, y luego todos los archivos de script relacionados pueden usarlo en consecuencia. – Monchoman45

+0

@ Monchoman45 Bueno, en mi opinión, las sesiones no están hechas para reemplazar $ GLOBALS o el almacenamiento en caché de páginas si eso es lo que piensa;) – Hajo

0

Vamos a la estancia del servidor entre las solicitudes, por lo que va a hacer objetos:

  • appserver-in-php - enfoque de las aplicaciones HTTP genérico para PHP5.3 + (inspirado en rack y WSGI)

Con las aplicaciones bien escritas eso le da más velocidad que APC, sin embargo, no escala entre los usuarios si necesita colocar varios cuadros (aún puede usar sesiones adhesivas).

1

Puede usar shared memory para algunos de los que desea, pero Redis/Memcache son probablemente mejores apuestas.

Cuestiones relacionadas