Foros del Web » Programando para Internet » PHP »

proceso recurrente con un solo boton

Estas en el tema de proceso recurrente con un solo boton en el foro de PHP en Foros del Web. Buenas. Tengo un proceso que coge los registro de una tabla en la BD, y hace un resto de cosas con cada uno de ellos ...
  #1 (permalink)  
Antiguo 04/10/2016, 09:52
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
proceso recurrente con un solo boton

Buenas.

Tengo un proceso que coge los registro de una tabla en la BD, y hace un resto de cosas con cada uno de ellos .. hasta hay normal.

El problema es que son muchos registros y dura mucho tiempo realizándolo, entonces normalmente lo que hago es correrlo por rangos... primero corrame el registro de 1 al 5000 luego de 5001 al 10000 etc. "teniendo en cuanta el limite de memoria y tiempo máximo de ejecución que no se puede seguir incrementando"

Me han pedido que quieren en el back de la pagina un formulario desde el cual puedan correr el proceso... lo que nose como hacer es que eso que comenté anteriormente sea transparente al usuario; es decir, el usuario da click en correr el proceso una sola vez y ya por debajo debería poder controlar los rangos y demás.



Tienen alguna idea de como manejar esto? o como lo harían?
  #2 (permalink)  
Antiguo 05/10/2016, 02:21
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: proceso recurrente con un solo boton

Pues podrías guardar el estado del proceso en algún lado, base de datos, txt... y con algún cron job ir comprobando el estado y su avance para lanzar un rango u otro.

Por ejemplo podrás construir una tabla con
Id (identificador unico)
fecha_inicio (inicio del proceso)
fecha_ultimo_cambio ( último uptade )
Estado (iniciado, finalizado, cancelado)
Ultimo_registro ( número de filas, 1000, 5000, 10000... )

Ahora creas un Script, para que el usuario pueda iniciar un proceso, que básicamente añadirá un nuevo registro a esta tabla. Por facilidad y por evitar conflictos, impediría crear un nuevo registro si hay ya alguno iniciado, aún que esto puede variar en función de las necesidades.

Por otro lado tienes tu cron Job lanzando otro script que consulta periódicamente esta tabla en busca de algún registro en iniciado, si lo hay realiza la tarea requerida, al final actualiza el registro cambiando el último registro actualizado, la fecha de la última actualización y si se llega al final del proceso también el estado.

Si ha habido algún error, se cambia el estado a cancelado.
También se puede dar la opción al usuario para cambiar el estado a cancelado, si se desea.

Espero haberme explicado. Un saludo.
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 05/10/2016, 08:17
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: proceso recurrente con un solo boton

Hasta donde entiendo, tu o alguien corre el proceso por lotes manualmente, del 1 al 5000, del 5001 al 10000.

Ahora lo que necesitas es que un usuario cualquiera clike un botón y el proceso sea automático, que además no se pierdan datos y no perjudique los recursos del sistema.

un proceso Cron está orientado a ejecturase desde el sistema operativo.

http://www.forosdelweb.com/f18/proce...ch-php-917930/

Lo que no entiendo es si debes mostrar los resultados de todos los procesos al usuario o simplemente que lo haga todo por debajo. por que mostrar al usuario si te conumira muchos recursos. pero ejecutarlo por debajo un proceso desde el mismo php tranquilamente aguantaría. mi última consulta es, con cuantos registros piensas trabajar
  #4 (permalink)  
Antiguo 06/10/2016, 08:40
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: proceso recurrente con un solo boton

Gracias a ambos por sus respuestas.

La cantidad de registros noes fija siempre van llegando mas registros... la cantiad inicial es de unos 40000 no son tampoco muchos pero con cada uno de ellos si se realiza un proceso largo por eso es que toma tiempo y memoria.

Respondiendo a wilmer, lo importante es que el proceso se corra por debajo no debo ir mostrando nada al usuario... aunque si tendria que enviarle un correo o algo cuando termine para que se entere que ya esta todo listo.

Haré caso a la solución que ustedes plantean, muchas gracias... Aunque no se si exista forma de habilitar el cron únicamente cuando inicie el proceso y des-habilitarlo cuando finalice.. como par que nose quede hay validando pero igual creo que es la mejor solución!
  #5 (permalink)  
Antiguo 06/10/2016, 08:55
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: proceso recurrente con un solo boton

Creo que podrías realizar un ETL de esta forma tu información estaría pre procesada y si necesitas hacer calculos los haces en este proceso.

Etiquetas: boton, formulario, proceso, registro, tabla
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 03:03.