none
mas tiempo de espera RRS feed

  • Pregunta

  • hola desde una pagina web estoy ejecutando un procedimiento almacenado en mysql..

    el proceso dura unos 3 minutos y otros procesos duran mas de media hora ..entonces tengo puesto un updateprogres para mostrar un gif de proceso ....pero el problema es que solo dura 1.30 segundos (un minuto 30 segundos..) necesito mostrar mas tiempo.... el tiempo necesario

    se que el commandtimeout del comando es de solo 30 s  lo he incrementado y por eso dura un minuto y medio ...pero por mas que incremente sigue durando ese mismo tiempo ..

    alguna idea..

     


    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    miércoles, 7 de abril de 2010 19:42

Respuestas

  • hola

    La tabla deberia tener los campos que necesitas registrar para lleva a cabo lo que haces actualmente el form al tardar 30 min

    o sea si ese form lanza el procesamiento de un archivo de texto, bueno deberia seria la tabla

    Tareas (table)
    IdTarea PK
    FilePath
    Estado

    o sea la info que necesites para poder realziarla, cuando la eejcutas desde la pagina tiene alli mismo esta info, pero al hacerlo por separado de alguna forma debes registrar esta info, para que el servicio pueda realizar la operacion

    el campo estado te imaginaras cual es la idea, poder decir si esta pendiente ,en ejecucion y finalizada, podrias si necesitas registrar la fecha y hora de registro y cuando se ejecuto, para poder llevar un log de la tarea

     

    crear un windows service no es complejo, por ahi estos link ayuden

    Create Windows Service in Visual Studio

    Creating a Basic Windows Service in C#

    Introducci ó n a las aplicaciones de servicios de Windows

     

     

    con respecto a la pagina, es simplemente listas las tareas registradas en un gridview para poder ver si se eejcuto, si quieres puedes agregarle filtros, la posibilidad de borrar una tarea, etc

    pero no es que dese una pagina con algun evento la refrescaras, el sea el servicio de windows no se comuncia con el sitio web, usa la tabla en la db para informar el estado, por eso el usuario debera refrescar cada tanto la lista de tarreas para ver si ya se ejecuto la suya

    recuerda que muchos usuario que lancesn tareas pueden encolar en la misam tabla por lo que debera esperar a que se procese cada una

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Pablo Gonzalez jueves, 8 de abril de 2010 14:30
    jueves, 8 de abril de 2010 2:03
  • otra alternativa que encontre es trabar con jobs en mysql....

    yo trabajo con mysql y lo voy a revisar como es todo esto...

    Gracias Leandro por tus aportaciones...


    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    • Marcado como respuesta Pablo Gonzalez jueves, 8 de abril de 2010 14:30
    jueves, 8 de abril de 2010 14:30

Todas las respuestas

  • hola

    el tema es que no se si es buena idea que la pagina se quede media hora procesando, que pasa si el cliente cierra el browser ene se tiempo, o se la apaga la pc

    cuando tengo este tipo de casos, lo qeu desarrollo es un servicio que procese de forma independiente la tarea

    o sea este procesamiento generaria una tarea que lanza la ejecucion pasando la info qeu encesites para ejecutar la misma, podrias usar (Microsoft Message Queuing) o sea colas para apilar las tareas, aunque una tabla de "tareas" en donde agregas registros por cada eejcucion que se debe procesar, por supuesto definir estados de ejecucion.

    luego con un servicio de windows vas tomando una a una las tareas y las ejecutas

    pero la pagina ya respondio, y le informo que la tarea esta pendiente de ejecucion

    luego en otra pagina podrias listas las tareas ejecutadas para que la info que se necesite pueda ser consultada

     

    este es el tipo de solucion que implemento cuando se que la eejcucion dura mas de unos simple minutos, ya que la web no esta preparada ni pensada para procesos largos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 7 de abril de 2010 19:55
  • estuve rebisando a cerca de MSMQ...Y claro es una gran alternativa...

    y te comento cuando mando a ejecutar el procedimiento ..si lo ejecuta hasta terminar demore lo que demore ..suponiendo uqe demora 7 minutos .....todo termina bien...pero el problema es que el proceso que muestro en la pagina termina pronto como digo un minutito y medio,,,entonces el usuario pensara que ya todo termino..

    Leandro no utilizado MSMQ,, ni WCF,,,por donde deberia empezar para resolver lo mas rapido este problema ..como digo tendria que estudiar eso y descargarme herramientas ...nose...la verdad estoy un poco retrasado y no tengo mucho tiempo para estudiar ..

     

    me podrias orientar por donde podria empezar cuales serian los pasos...a seguir

    o talvez alguna otra solucion de manera que el usuario sepa que la bd esta procesando..

    gracias

     

     

     


    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    miércoles, 7 de abril de 2010 20:15
  • hola

    en realidad  usar MSMQ era solo una idea, si registras la tarea en una tabla creada a tal efecto es lo mismo

    o sea crea una tabla de "Tareas" y registra alli cada vez que desde la pagina se lanza una ejcucuion del proceso que estas creando

    lo importante aqui es la creacion del servicio de windows que tomara cada cierto tiempo estas tareas en la tabla y ejecutara el proceso, cambiando el estado una vez termiando

    el tema es que necesitaras dos paginas web, la que tienes actualmente que registrara la tarea y nada mas, y otra que permitra al usuario consultar el estado de eejcucion de la misma y si hay un rsultado tambien poder verlos si es que se selecciona esta tarea

    pero lo importante es el servicio de windows que instalas en el servidor para procesar la transaccion que demora

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 7 de abril de 2010 21:15
  • gracias leandro es buena idea lo comprendo...

    pero que contendria la tabla tareas y como se realiza un servicio de windows

    como controlaria tal evento y mostrar en otra pagina al usuario...


    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    miércoles, 7 de abril de 2010 21:22
  • hola

    La tabla deberia tener los campos que necesitas registrar para lleva a cabo lo que haces actualmente el form al tardar 30 min

    o sea si ese form lanza el procesamiento de un archivo de texto, bueno deberia seria la tabla

    Tareas (table)
    IdTarea PK
    FilePath
    Estado

    o sea la info que necesites para poder realziarla, cuando la eejcutas desde la pagina tiene alli mismo esta info, pero al hacerlo por separado de alguna forma debes registrar esta info, para que el servicio pueda realizar la operacion

    el campo estado te imaginaras cual es la idea, poder decir si esta pendiente ,en ejecucion y finalizada, podrias si necesitas registrar la fecha y hora de registro y cuando se ejecuto, para poder llevar un log de la tarea

     

    crear un windows service no es complejo, por ahi estos link ayuden

    Create Windows Service in Visual Studio

    Creating a Basic Windows Service in C#

    Introducci ó n a las aplicaciones de servicios de Windows

     

     

    con respecto a la pagina, es simplemente listas las tareas registradas en un gridview para poder ver si se eejcuto, si quieres puedes agregarle filtros, la posibilidad de borrar una tarea, etc

    pero no es que dese una pagina con algun evento la refrescaras, el sea el servicio de windows no se comuncia con el sitio web, usa la tabla en la db para informar el estado, por eso el usuario debera refrescar cada tanto la lista de tarreas para ver si ya se ejecuto la suya

    recuerda que muchos usuario que lancesn tareas pueden encolar en la misam tabla por lo que debera esperar a que se procese cada una

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Pablo Gonzalez jueves, 8 de abril de 2010 14:30
    jueves, 8 de abril de 2010 2:03
  • otra alternativa que encontre es trabar con jobs en mysql....

    yo trabajo con mysql y lo voy a revisar como es todo esto...

    Gracias Leandro por tus aportaciones...


    Pablo González Desarrollo de Sistemas. Ecuasoftware.Net Ecuador.
    • Marcado como respuesta Pablo Gonzalez jueves, 8 de abril de 2010 14:30
    jueves, 8 de abril de 2010 14:30