2010-09-14 8 views
12

Soy desarrollador de Java y C#, y, lo admito, no soy tan bueno en PHP.¿Cómo guardo los datos en un ámbito de aplicación en PHP?

Necesito almacenar un objeto en un ámbito de aplicación que viva mientras se esté ejecutando la aplicación. No puedo guardarlo en la sesión, porque expira, y tampoco puedo serializarlo en el disco.

¿Hay algo así como un objeto C# Application en PHP?

+0

Tenga en cuenta que, a diferencia de Java (y probablemente en C#), el código PHP no permanece fuera de una solicitud de página. Tendrá que almacenarlo manualmente y recuperarlo en alguna parte para cada página; sin embargo, esto se puede colocar fácilmente dentro de su marco de trabajo para dar el efecto de que está "siempre disponible". – staticsan

Respuesta

17

2018 Edición: tiempo tiene no sido amable con APC, sobre todo a partir de PHP 7 incluye soporte integrado para Zend Optimizer +, que lo hace en gran medida la misma cosa (excepto la tecla de la tienda). En estos días, el aspecto de la tienda clave se ha bifurcado en the APCu project.

Sin embargo, en 2018, el almacén de claves preferido es Redis. Vea el ext-redis project para más detalles.


PHP tiene un alcance de aplicación. se llama APC (Alternative PHP Cache).

datos deben almacenarse en caché en APC si cumple con los siguientes requisitos:

  1. No es usuario de la sesión específica (si es así, poner en $ _SESSION [])
  2. no es realmente largo plazo (si es así, utilizar el sistema de archivos)
  3. Sólo es necesario en un servidor PHP (si no es así, considere el uso de memcached)
  4. desea que esté disponible para todas las páginas de su sitio, al instante, incluso otra (no asociados) programas PHP.
  5. No le molesta que todos los datos almacenados en él se pierdan en la recarga/reinicio de Apache.
  6. Desea que el acceso a los datos sea mucho más rápido que el basado en archivos, protegido contra membranas o (especialmente) basado en bases de datos.

APC ya está instalado en una gran cantidad de hosts, pero siga la guía antes mencionada para instalarse en su caja. Luego, haga algo como esto:

if (apc_exists('app:app_level_data') !== false) 
{ 
    $data = apc_get('app:app_level_data'); 
} 
else 
{ 
    $data = getFromDB('foo'); 
    apc_store('app:app_level_data', $data); 
} 
+4

Es apc_fetch, no apc_get, creo ... – raoulsson

+0

@raoulsson, tienes razón, respuesta editada. – daVe

Cuestiones relacionadas