Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Usar clase estatica como almacenamiento volatil

Estas en el tema de Usar clase estatica como almacenamiento volatil en el foro de PHP en Foros del Web. Hola gente que tal? Tengo una duda y queria saber si es posible o no. Por dar un ejemplo simple, supongamos que quiero hacer un ...
  #1 (permalink)  
Antiguo 27/01/2014, 13:59
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Usar clase estatica como almacenamiento volatil

Hola gente que tal?

Tengo una duda y queria saber si es posible o no.

Por dar un ejemplo simple, supongamos que quiero hacer un sistema de salas de chat donde la gente cree o entre a una sala y publique mensajes, (para hacerlo mas simple, sera anonimo, solo se indica la sala y se publican msj dentro,, nada mas)

habia pensado en algo asi:

Código PHP:
Ver original
  1. // salas.php
  2. <?php
  3.  
  4. class salas
  5. {
  6. public static mensajes = array();
  7. }

Código PHP:
Ver original
  1. // publicar.php
  2. require('salas.php');
  3.  
  4. // Estas variables vendrian desde un formulario por post
  5. $_POST['id_sala'] = 4;
  6. $_POST['texto'] = 'Hola, soy un mensaje';
  7.  
  8. if(!isset(salas::mensajes[$_POST['id_sala']]))
  9. salas::mensajes[$_POST['id_sala']] = array();
  10.  
  11. salas::mensajes[$_POST['id_sala']][] = $_POST['texto'];


Código PHP:
Ver original
  1. // consultar.php
  2. require('salas.php');
  3.  
  4. // Estas variables vendrian desde un formulario por post
  5. $_POST['id_sala'] = 4;
  6.  
  7. echo(json_encode(salas::mensajes[$_POST['id_sala']]));

La idea es que mientras alla alguien conectado, la clase estatica contenga los mensajes, al desconectarse todos esta dejaria de existir "vaciendose" y cuando vuelva alguien a conectarse esta se crearia nuevamente.

El problema esta en que no se como (si se puede) "mantener viva" a la clase despues que termina la ejecucion de un script y no hay ningun otro ejecutandose por un cierto tiempo antes de que se borre, digamos 30 segundos, como si fuese la fecha de expiracion de las sessiones.

La idea es no guardar nada fisicamente, que todo sea volatil y que no halla registro de nada.

En Java, una clase estatica es la misma para todos los usuarios, pero nose si en php es igual ya que el manual ni lo niega ni lo confirma, hace unicamente referencia a como se comporta dentro de un mismo script pero no a como se comporta cuando hay mas de un usuario utilizandola en simultaneo.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #2 (permalink)  
Antiguo 27/01/2014, 14:04
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Usar clase estatica como almacenamiento volatil

O metes los mensajes en la BD, o en un fichero, o en algún sistema de caché como APC; pero en PHP no existe las variables estáticas para todos los usuarios como en JSP.
  #3 (permalink)  
Antiguo 27/01/2014, 15:02
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Usar clase estatica como almacenamiento volatil

oh que mal, entonces mas que estaticas son unicas, si puede haber diferentes instancias segun el usuario esta mal usado ese nombre.

No hay nada que sea comun a todos los visitantes, algo que todos puedan acceder, modificar y los demas vean estos cambios? Me refiero siempre a variables volatiles, no sistemas de cache, archivos, bd, etc. Habia pensado en que todos compartieran la session, pero, la session se serializa y deserializa en un fichero, asi que tampoco sirve.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #4 (permalink)  
Antiguo 27/01/2014, 15:26
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Usar clase estatica como almacenamiento volatil

Lo que quieres es Memcache/memcached.
  #5 (permalink)  
Antiguo 27/01/2014, 16:19
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Usar clase estatica como almacenamiento volatil

muchas gracias dashtrash, algo asi es lo que buscaba. lastima que php no soporta clases estaticas multiusuario, supongo que al no contar con una maquina virtual oficial (sin contar hip-hop), esto se hace medio dificil de implementar.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: almacenamiento, clase, estatica, fecha, formulario, registro, usar, usuarios, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:10.