Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/12/2014, 11:06
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Como obtimizar memoria cuando se usa require, require_once y daemon

Cita:
* entre cada solicitud de las ultimas capaz que son con require existe el modo de destruirlo cuando ya realizaron su función y asi evitar el acumulado?.
No. El código es incluido y evaluado en contexto actual. Una vez ocurrió esto, no es posible desalojarlo hasta que el script finalice.
Cita:
* El recolector de PHP debería de reciclar la memoria cuando se deja de utilizar en vez de asignarle mas entre cada iteracion del daemon?
No. Porque lo que estas haciendo es incluir ciclicamente archivos, php trae al contexto actual los archivos y los evalua. Para que sean atrapados por el recolector deberias de forma explicita (mediante unset) avisarle que ya no los usaras mas.

Mas alla de eso, creo que le estas errando de camino (y de terminologia) para tal implementacion.

Un deamon es un proceso que si muere vuelve a nacer y nunca puede ser destruido, en php no puedes programar deamons, lo que tu estas haciendo es un loop infinito (como si fuese un socket), que es otra cosa diferente.

Para solventar el problema, la mejor manera es que recurras a otro lenguaje para hacer el loop llamando a php, o bien desde php pero no con includes o requires sino con exec.

La idea seria que dentro del loop, llames con exec al archivo, por ejemplo:
Código PHP:
Ver original
  1. exec("php capa1.php");

De esta forma, evitaras el aumento de consumo.

Si optas por poner el loop en otro lenguaje (por ejemplo bash) la idea es la misma, llamar al archivo php dentro del loop.

No queda muy en claro que tipo de conexion tienen las 4 capas entre si ni de que forma interactuan, posiblemente tengas que pensar alguna forma de comunicarlas sin que esten en el mismo contexto. Una opcion podria ser pasando parametros por GET en cada llamada.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios