Foros del Web » Programando para Internet » PHP »

Procesos residentes en PHP

Estas en el tema de Procesos residentes en PHP en el foro de PHP en Foros del Web. Hola, Estoy implentando un script de mantenimiendo de una base de datos en la que se han de eliminar registros si estos han "caducado". El ...
  #1 (permalink)  
Antiguo 24/01/2002, 15:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Procesos residentes en PHP

Hola,

Estoy implentando un script de mantenimiendo de una base de datos en la que se han de eliminar registros si estos han "caducado".

El caso que este script necesito ejecutarlo cada cierto tiempo y no he encontrado manera de hacerlo o dejar un script ejecutandose en el servidor (ej. un bucle que revisa hora/fecha y ejecute ese scritp de mantenimiento si se cumple una condicion).

Hasta el momento lo hago de forma manual .. ejecutando el script en cuestion ..

Se me ha ocurrido meter dicho escript en la pagina que visualiza los datos de esa misma base de datos ... pero no es factible .. carga al servidor y retrasa la entrega de datos al visitante de la web.

Se puede hacer un proceso residente en "memoria" bajo PHP?

Un saludo,
  #2 (permalink)  
Antiguo 24/01/2002, 16:26
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años
Puntos: 68
Re: Procesos residentes en PHP

Hay manera de hacerlo, si.
Tan solo crea tu script para que trbajo como un loop infinito.
Luego, utiliza la función ignore_user_abort(true); para indicar que aunque el usuario aborte el script, este continúa trabajando.

Eso sí, después para matar al proceso, fijate vos como haces. :P

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #3 (permalink)  
Antiguo 24/01/2002, 16:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Procesos residentes en PHP

Gracias Webstudio ..

Mirare las funciones que describes ...

Si saco algo en claro ya lo publicare por aqui.

Saludos,
  #4 (permalink)  
Antiguo 24/01/2002, 21:21
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
Re: Procesos residentes en PHP

Bueno si estas trabajando con servidores *NIX, lo que te recomiendo es que uses el cron para la tarea que necesitas.

El cron es un demonio que se ejecuta cada minuto y buscas los archivos que han sido agregados con el comando crontab, busca en ellos los comandos que se vayan a ejecutar.

A hora como sabemo php generalmente esta compilado como modulo de apache, pero tambien puede estar compilado como binario para poder ser usado en el shell.

Si esta compilado tambien de la segunda forma lo que necesitas hacer es escribir tu rutina como lo haces normalmente y agregar al inicio del script #!/usr/local/bin/php -q . Si por algun motivo php esta compilado como modulo es tambien posible ejecutar el script pero para esto es necesario que uses un navegado de texto esto lo explicare mas adelante.

posterior a esto necesitas crear un archivo contrab que usara el cron para saber cuando ejecutar el comando que se encuentra en el.
supongamos que tu archivo en php se llama rutina.php y que lo quieres ejecutar cada hora pues bien en tu editor de texto favorito agregaras la siguiente linea.
<pre>
* 0-23 * * * /ruta/a/tu/script/rutina.php
#en caso de que este como modulo
#* 0-23 * * * lynx rutina.php &gt; /dev/null
</pre>
la segunda linea esta comentada y la avilitas si php esta como modulo luego valiendote del lynx que es un navegador de texto levantas el script.

A hora salvas tu archivo y le poner algun nombre cron-hora por ejemplo y por ultimo lo agregas al cron de la siguiente forma

<pre>crontab -u usuario cron-hora </pre>

y seria todo para mas detalles lee la siguiente documentacion;
man cron(8)
man crontab(1)
man crontab(5)

Saludos.
  #5 (permalink)  
Antiguo 24/01/2002, 21:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Procesos residentes en PHP

Muchas gracias por la informacion ... tomo nota y lo estudiare mas adelante . jeje, recien estoy aprendiendo PHP y algo de configuracion de servidores, en mi caso Apache sobre Windows...

Pero .. todo llegara y algun dia me metere con Linux.

Gracias!, Un saludo.
  #6 (permalink)  
Antiguo 25/01/2002, 01:01
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
Re: Procesos residentes en PHP

hmmm. bueno debi de haber preguntado antes de contestar pero asi es esto a veces aciertas otras no, pero no te preocupes hay mas de una forma de hacer lo que necesitas.

Pero aqui te dejo una liga que puede aligerar tus penas en windows, ya lo demas sera tu cretividad.

<a href='ir.asp?http://nemtsev.eserv.ru/' target='_blank'>http://nemtsev.eserv.ru/...</a>

Saludos.
  #7 (permalink)  
Antiguo 25/01/2002, 09:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Procesos residentes en PHP

Gracias una vez mas.
Por lo menos, me servira para ir practicando con &quot;demonios&quot; en este caso el que mencionas para windows.

Un saludo,
  #8 (permalink)  
Antiguo 25/01/2002, 12:26
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: Procesos residentes en PHP

Lo que se me ocurre también es que te armes todo el script SQL en un archivo (ej. depura.sql) y luego mediante un .bat o .cmd (no sé que versión de Win usás) llames al mysql (mysql tu_base &lt; depura.sql), todo esto definido en el programador de tareas del Win (que no le llega ni a los talones a un cron de Unix). Ojo, no sé si aplica para lo que necesitás vos porque desconozco como determinás que registro &quot;caducó&quot;, si es una marca, una fecha vencida, etc y se puede evaluar desde la sentencia SQL, pero es una idea mas para que tengas en cuenta. Ahora si lo tenés que solucionar desde PHP solamente no sirve. Lo bueno de esto es que veamos que, por suerte, existen muchas formas de solucionar un problema.

Leonardo D'Angelo
Buenos Aires
Argentina
  #9 (permalink)  
Antiguo 25/01/2002, 16:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Procesos residentes en PHP

Idangelo,
En principio queria resolver el problema directamente sobre PHP ..
Las pruebas de mis scripts las hago en mi PC con Apache+PHP+Mysql en ambiente Windows (98) .. pero al final el resultado lo subo a un servidor remoto en internet Linux.

Lo de los *.bat .. es buena idea para windows .. aunque basicamente para determinar un registro caduco se hace (o lo hago) por fecha (inserto la fecha en el que el registro se dio de alta y se da de baja al pasar unos dias si no ha ocurrido otro evento que inserto una &quot;bandera&quot; (marca, flag ..) en otro campo del registro).

Por lo menos, por lo q veo hay varias formas de hacerlo y mas si el servidor es tuyo o tienes acceso a el.

Gracias por las sugerencias.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:58.