Foros del Web » Programando para Internet » PHP »

Ejecutar función después de 5 minutos

Estas en el tema de Ejecutar función después de 5 minutos en el foro de PHP en Foros del Web. Hola. ¿Es posible ejecutar una función en PHP después de 5 minutos sin parar la ejecución del programa ni que se quede colgado? Es decir, ...
  #1 (permalink)  
Antiguo 25/01/2013, 04:37
 
Fecha de Ingreso: septiembre-2012
Mensajes: 60
Antigüedad: 12 años, 2 meses
Puntos: 1
Ejecutar función después de 5 minutos

Hola.
¿Es posible ejecutar una función en PHP después de 5 minutos sin parar la ejecución del programa ni que se quede colgado? Es decir, sin sleep.

Podría hacer un fork con pcntl_fork() y que el sleep() lo hiciera un proceso hijo, pero esa función no funciona en servidores Apache. Y uso Apache.

Tampoco me gustaría usar cronjobs de momento...

¿Alguna solución?
Un saludo
  #2 (permalink)  
Antiguo 25/01/2013, 06:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Ejecutar función después de 5 minutos

Puedes usar system o exec, si no puedes entonces cronjob.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/01/2013, 06:30
 
Fecha de Ingreso: septiembre-2012
Mensajes: 60
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Ejecutar función después de 5 minutos

El problema es que la función que se tiene que ejecutar, utiliza un Model de Codeigniter, y para ello esa función tiene que estar dentro de la estructura de ese Framework, por ejemplo dentro de una clase Controller.
Con shell_exec(), podría ejecutar un archivo que tuviera esa función a ejecutar, pero que yo sepa los controladores (que son clases) no se pueden ejecutar. Y supongo que dentro de un archivo php (sin ser de Codeigniter), no se puede instanciar una clase controller que sea de codeigniter.
  #4 (permalink)  
Antiguo 25/01/2013, 06:43
 
Fecha de Ingreso: septiembre-2012
Mensajes: 60
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Ejecutar función después de 5 minutos

El motivo de por qué necesito ejecutar esa función pasados 5 minutos:
Tengo una aplicación web que en su versión demo solo puede ser usada por un usuario a la vez y solo durante 5 minutos. Para controlar esto, tengo una variable flag en la base de datos para indicar si la aplicación está ocupada y otro usuario no puede utilizarla mientras (se controla al hacer login). Esa variable se resetea mediante una petición Ajax en las siguientes circunstancias:
- cuando el usuario que usa la aplicación cierra la ventana
- cuando se acaba el tiempo (se hace logout automáticamente)
- cuando el usuario hace logout manualmente

Tras estas circunstancias, se posibilita al siguiente usuario que pueda acceder a la aplicación haciendo login, pero...¿y si el usuario que está usando la aplicación pierde la conexión a Internet y no vuelve a acceder a la aplicación? La variable flag de la base de datos quedaría sin resetear y el siguiente usuario no podría utilizar la aplicación.
Por tanto es necesario resetear dicha variable también desde PHP, pasados 5 minutos desde que un usuario accede a la aplicación.

Etiquetas: minutos
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 21:57.