Ver Mensaje Individual
  #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