¿Hay alguna forma de almacenar datos pequeños en la memoria RAM usando PHP para que pueda tener acceso a los datos entre una sesión diferente en lugar de regenerarla? Algo similar a memcached (no tengo acceso a memcahced). Mi solución actual es solo guardar los datos en un archivo.¿Cómo puedo almacenar datos en la memoria RAM usando PHP?
Respuesta
estoy asumiendo que usted está en un servidor compartido de algún tipo.
memcached
u otra solución de almacenamiento en caché es de hecho la única manera de hacer esto.
Sesiones, el método más prominente de la persistencia de datos a través de las páginas PHP, trabajo basado en archivos. En su lugar, puede cambiar el controlador de sesión para que se base en la base de datos, pero eso no está basado en la RAM, tampoco.
Por lo que yo puedo ver, sin cambiar su sistema en el nivel de raíz (por ejemplo, para instalar memcached, o archivos de almacén de sesión en un disco RAM), esto no es posible.
Siempre puede usar una base de datos en la memoria para guardar los datos. Posiblemente exagerado, sin embargo.
Me sorprende que nadie más haya subido tu respuesta. He tenido éxito usando tablas de memoria mysql y son realmente rápidas.RDB puede ser excesivo para las sesiones, pero es una gran opción cuando no tiene acceso a memcached o/dev/ –
APC?
Funciona de forma diferente a memcached; en memcached puedes acceder a los datos de varios idiomas (c, python, etc.) mientras que APC solo funciona para PHP.
EDIT ¿Estás seguro de que APC está instalado correctamente? ¿Agregó extension=apc.so
en su php.ini? Y para reiniciar apache (estoy suponiendo que estés en un servidor de lámpara con apache2)? ¿Qué dice phpinfo();
sobre APC?
Ésta es una simple prueba que funcionan a la perfección para mí:
<?php
/*
* page.php
* Store the variable for 30 seconds,
* see http://it.php.net/manual/en/function.apc-add.php
* */
if(apc_add('foo', 'bar', 30)){
header('Location: page2.php');
}else{
die("Cant add foo to apc!");
}
<?php
/*
* page2.php
* */
echo 'foo is been set as: ' . apc_fetch('foo');
PS: Yo prefiero usar apc_add
sobre apc_store
, pero la única diferencia entre ellos es que duerma apc_add sobrescribir la variable, pero se producirá un error si se llama dos veces con la misma clave:
Almacene la variable con este nombre. las claves son exclusivas de caché, por lo que intentar usar apc_add() para almacenar datos con una clave que ya existe no sobrescribirá los datos existentes y, en su lugar, devolverá FALSE. (Esta es la única diferencia entre apc_add() y apc_store().)
Es una cuestión de gusto/tarea de la secuencia de comandos, pero el ejemplo anterior funciona con apc_store también.
No puede instalar memcached, por lo que es probable que no pueda instalar APC –
Verdadero, pero muchos hosts lo permiten el uso de APC (con algunas limitaciones) - tenemos que preguntarle. – Strae
crear un archivo en /dev/shm
y se mantendrá en la memoria hasta que la máquina se reinicia. Esto puede o no ser más rápido que usar cualquier archivo antiguo, dependiendo de su patrón de uso.
Parece estar en un servidor compartido –
@Pekka Bueno, entonces está jodido ... Esperemos que su archivo sea almacenado en caché por el sistema operativo. – kijin
- 1. Cómo comprobar la cantidad de memoria RAM en I
- 2. ¿Cómo puedo ejecutar un ejecutable desde la RAM usando C++?
- 3. Android: ¿Cómo almacenar datos en la memoria interna?
- 4. ¿Cómo aumentar la memoria RAM para el clúster en couchbase?
- 5. jQuery.data: ¿cuántos datos puedo almacenar en él
- 6. Almacenar variables de PHP en la memoria entre ejecuciones de script
- 7. Usar toda la memoria RAM en MS-DOS
- 8. PHP - ¿Almacenar imágenes en datos de SESIÓN?
- 9. ¿Cómo hacer una imagen almacenada? ¿Usa menos memoria RAM?
- 10. cómo almacenar video en la base de datos usando mysql?
- 11. obtener el servidor ram con php
- 12. Almacenar datos de sesión usando MemoryStore en el Nodo, similar a $ _SESSION [ 'datos'] = Valor en PHP
- 13. Cómo almacenar datos de manera segura en MySQL usando AES_ENCRYPT
- 14. ¿Cómo puedo aumentar la memoria RAM y configurar una red de solo host en Vagrant?
- 15. ¿Cómo puedo crear un disco RAM programáticamente?
- 16. iPhone: ¿Cómo puedo almacenar UIImage usando NSUserDefaults?
- 17. ¿Cuánta RAM está usando realmente SQL Server?
- 18. ¿Cómo puedo asegurarme de que MySQL esté usando toda la memoria disponible?
- 19. ¿Cómo puedo determinar cuánta memoria está usando mi programa .NET?
- 20. ¿Cómo se obtienen los datos de la RAM?
- 21. Implementación IList de archivo mapeado en memoria, para almacenar conjuntos de datos grandes "en la memoria"?
- 22. Cómo publicar datos en PHP usando file_get_contents?
- 23. ¿Es posible cargar una base de datos en la RAM?
- 24. PHP no puede usar 300MB de RAM
- 25. ¿Cómo limito RAM para probar situaciones de poca memoria?
- 26. ¿Cómo almacenar archivos .pdf en MySQL como BLOB usando PHP?
- 27. ¿La mejor práctica para almacenar datos globales en PHP?
- 28. ¿Cuántos datos puedo almacenar en una cookie?
- 29. Usando Python, ¿cómo puedo leer/escribir datos en la memoria como lo haría con un archivo?
- 30. ¿Cómo transmitir correctamente grandes datos desde MVC3 sin usar demasiada memoria RAM?
posible duplicado de [PHP - Las variables del lado del servidor que "vivirán" para siempre?] (Http://stackoverflow.com/questions/4086044/php-server-side-variables-that-will-live-for- siempre) - hay muchas respuestas allí que son aplicables a su pregunta. – Gordon
¿Por qué? En cualquier sistema operativo moderno (donde el almacenamiento no está en un sistema de archivos compartido), los datos del archivo se almacenan en caché en la memoria de todos modos. – symcbean
Editado mi respuesta. – Strae