Foros del Web » Programando para Internet » ASP Clásico »

esperar a que se cree un fichero

Estas en el tema de esperar a que se cree un fichero en el foro de ASP Clásico en Foros del Web. Hola amig@s asperos!! me gustaría saber si en ASP hay alguna funcioncita para esperar... esperar un rato y a cada unos segundo mirar si existe ...
  #1 (permalink)  
Antiguo 07/04/2005, 06:15
Avatar de dabadubab  
Fecha de Ingreso: febrero-2005
Ubicación: Sant Hiuston
Mensajes: 157
Antigüedad: 20 años, 2 meses
Puntos: 0
esperar a que se cree un fichero

Hola amig@s asperos!!

me gustaría saber si en ASP hay alguna funcioncita para esperar... esperar un rato y a cada unos segundo mirar si existe un fichero (esto ya lo sé hacer... con fileexists)

no sé algun rollo timer o algo asin... es porqué mi fichero ASP crea un fichero de texto que otro programa del servidor (que está ejecutandose en espera de econtrar archivos de texto) lo lee y genera una pagina HTML (con el resultado de la consulta)... molaría para, en el ASP, esperar a que crease este ultimo y hacer un redirect(paginacreada) para enviarla al mismo ordenador (seria bueno no? jajja!)

SAludos y disfruten!!
Bernat
  #2 (permalink)  
Antiguo 07/04/2005, 06:24
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
si tienes acceso al programador de tareas de windows, puedes hacerlo con ésto. Pero si no lo tienes, puedes poner una rutina en la página principal de la web de tal manera que, cada visitante que entre, ejecute la rutina para ver si el fichero existe. Así te aseguras de que para cada visita está el fichero.

Espero que te valga. Avisa con lo que hagas. Un saludo.

Última edición por trasgukabi; 07/04/2005 a las 06:25
  #3 (permalink)  
Antiguo 07/04/2005, 07:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Hay algunos componentes (gratuitos algunos de ellos) que hacen eso. Buscar en las respuestas anteriores.
  #4 (permalink)  
Antiguo 07/04/2005, 13:36
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
El componente que dice Myakire es el WaitFor 1.0 (al menos ese es el que conozco)

Acá te paso un enlace donde, además de mencionar ese componente, dan otras dos posibles soluciones: http://www.aspfaq.com/show.asp?id=2141

Una hace uso de SQLServer y la otra, la que NO recomienda , es un script que hice yo y se lo mandé como una alternativa (por lo menos lo publicó para demostar lo que no se debe hacer )
__________________
...___...
  #5 (permalink)  
Antiguo 07/04/2005, 18:33
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años
Puntos: 2
Hola!

Mira, lo que estan poniendo no creo que sea la solucion, al parecer lo que quieren es algo asi:

1. crear archivo ' el compilador se detiene y no avanza hasta que el archivo haya sido creado.

2. Response.Redirect "/archivo.asp" //archivo que lee el archivo que estamos creando.

La verdad creo que esto ya lo hace automaticamente, sin embargo no se si ya lo probaste y por eso preguntas aqui la razon.

Si no lo hace, los metodos que pusieron en el foro no seran eficaces porque depende del tiempo que gaste el crear el archivo, el cual nunca sabras exactamente cuanto tiempo es.

Pro otra parte debes implementar un sistema de seguridad, si dices que otra pagina funciona en base a este archivo creado oucpas algo como:

0. Session("ArchivoEstatus") = "Cerrado"

1. crear archivo ' el compilador se detiene y no avanza hasta que el archivo haya sido creado.

1.1 Session("ArchivoEstatus") = "Abierto"

2. Response.Redirect "/archivo.asp" //archivo que lee el archivo que estamos creando.

La segunda pagina siempre pregunta:

0. if Session("ArchivoEstatus") = "Cerrado" then
"NO USAR EL ARCHIVO"
else
"SI USAR EL ARCHIVO"

Lo pongo con ese tipo de mensajes y variables para que sea claro... bien...

Bueno, pruebalo y dinos si eso esta corriendo correctamente.

Otra opcion para el tiempo, es esta:

1. crear archivo '

2. while Session("ArchivoEstatus") = "Cerrado"
if FileExist(x) then
Session("ArchivoEstatus") = "Abierto"
end

3. Response.Redirect...

El consumo en el proceso del servidor se minimiza a los milisegundos - segundos en que ocurre esta accion, y desaparecera despues del Response.Redirect asi economizas recursos, pero como digo, esta es en tal caso la ultima opcion.

Prueba la primera, debe funcionar asi como te digo, porque la funcion de crear y luego escribir no permiten avanazar al compilador hasta terminar de ejecutarse, es decir, crear el archivo, y luego escribir en el.

Bueno, suerte, creo que asi funcionara bien
  #6 (permalink)  
Antiguo 08/04/2005, 04:46
Avatar de dabadubab  
Fecha de Ingreso: febrero-2005
Ubicación: Sant Hiuston
Mensajes: 157
Antigüedad: 20 años, 2 meses
Puntos: 0
me ha gustado el bucle... es el que mas se acerca a mi historia... pero ya lo cooncía... podría con el sesion o una variable misma del programa...

while status=false
if fileexists(x) then
f = file(x)
end if
wend

esta guai pero me ralla el rollo que el bucle consume recursos sin parar hasta que el otro programa (que está corriendo siempre... tb por un bucle más;P) genera el fichero y entonces mi ASP lo envía con redirect.

mi ASp sería del rollo:

<%
recoje valores del form
crea fichero texto con los valores
[el programa del servidor que está corriendo recoje el fichero de texto creado, consulta la base de dato y crea un fichero html]
quiero que espere a que se cree (de momento con el bucle while)
cuando lo encuentra (filexists(x)=true) redirect(file(y)) 'donde y es el fichero html creado!'
%>

sólo me queda saber si hay alguna manera más pulida para esperar a que el archivo esté creado.

salud!
Bernat

Última edición por dabadubab; 08/04/2005 a las 08:44
  #7 (permalink)  
Antiguo 08/04/2005, 11:29
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años
Puntos: 2
Ok.

Mira, prueba esto, como te dije, eso de esperar debe hacerlo automaticamente, yo no he tenido problemas con eso... pero bueno, si YA LO PROBASTE entonces el recurso es el bucle.

Sin embargo... falta algo en el script..

1. Debes borrar el archivo que estas modificando o creando (es decir te aeguras de que no existe desde el principio.

2. Creas variables de Session("ArchivoStatus") = "Cerrado"... NOTA: Debe ser Session porque existe una segunda pagina que tambien intenta accesar a este archivo, y si lo hace mientras este archivo esta siendo modificado habra un error.

2. Creas archivo y escribes en el archivo.

3. [Si resulta necesario haces el bucle]

4. Session("ArchivoStatus") = "Abierto"

4. Redireccinas hacia la siguiente pagina.

Nota:

Lo que si es posible es que el compilador encuentra el redirect y rapido se vaya a la siguiente pagina, para esto tendrias 2 procesos activos:

1. Pagina 1 = Creando Archivo
2. Pagina 2 = Tratando le leer el archivo

Si esto esta ocurriendo realmente, entonces lo mas eficaz es esto:

1. Debes borrar el archivo que estas modificando o creando (es decir te aeguras de que no existe desde el principio.

2. Creas variables de Session("ArchivoStatus") = "Cerrado"... NOTA: Debe ser Session porque existe una segunda pagina que tambien intenta accesar a este archivo, y si lo hace mientras este archivo esta siendo modificado habra un error.

2. Creas archivo y escribes en el archivo.

3. Redireccinas hacia la siguiente pagina.

En la pagina 2:

1. Realizas el bucle sobre la variable de Session solo si la variable de session existe y tiene un valor valido, porque no quieres empezar un

2. Session("ArchivoStatus") = "Abierto"

3. Realizas las tareas normales de esta pagina.

Eso seria lo mejor, por otra parte, mencionaste que no te gusta el bucle porque tendiras 2 bucles:

1. En pagina 1
2. En pagina 2

Pero si la logica es correcta realmente solo necesitaras 1 bucle, es cuestion de que diseñes bien el flujo de la informacion en tus paginas.

Mencionas que existe un proceso en el servidor que siempre esta corriendo y que el es el encargado de crear el archivo, es decir, masndas llamar a ese proceso, o esperar a que eso proceso actue solo, eso me queda como duda, porque si es un script aparte que se ejecuta cada cierto tiempo, ese es el verdadero problema entonces, que debes hacer algo para poder comunicarte con e incluirlo en tu ejecucion, asi no necesitas el Bucle, pero bueno, si eso tampoco es posible hacerlo revisa la logica para aplicar bien el bucle.

Bueno, suerte!!!

Última edición por Neuron_376; 08/04/2005 a las 11:36
  #8 (permalink)  
Antiguo 29/04/2005, 10:44
Avatar de dabadubab  
Fecha de Ingreso: febrero-2005
Ubicación: Sant Hiuston
Mensajes: 157
Antigüedad: 20 años, 2 meses
Puntos: 0
gracias Neuron!! nos leemos!
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 09:15.