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

Objetos sin limpiar

Estas en el tema de Objetos sin limpiar en el foro de ASP Clásico en Foros del Web. Hola a to2. Tengo una duda sobre la que no he encontrado información. Quisiera saber si existe alguna opción (parecidas a las variables del servidor) ...
  #1 (permalink)  
Antiguo 23/03/2005, 02:57
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Pregunta Objetos sin limpiar

Hola a to2.

Tengo una duda sobre la que no he encontrado información. Quisiera saber si existe alguna opción (parecidas a las variables del servidor) para poder obtener info del servidor respecto a todos los objetos que pudieran estar abiertos y que no se hubieran limpiado.

Suelo hacer las páginas asp intentanto meter "todo en uno", es decir, si tengo una página por ejemplo para registrarse un usuario, pues en la misma página se registra, se valida, o incluso desde esa misma página se le envían sus datos de recordatorio (en lugar de tener 3 páginas: registro.asp, validacion.asp, y recordatorio.asp). Quizás sea poco recomendable hacer esto, pero me ahorro un montón de ficheros. Tengo páginas en las que hay más de 600 líneas de código (no sé si serán muchas o pocas, pero a veces uno se pierde entre tantos bucles, condicionales, y demás) que evalúan un montón de cosas, y pese a que las he repasado una y mil veces, y no me dan problemas, siempre me queda la duda de si existirá algo que se haya podido quedar abierto porque se me haya escapado cerrarlo al entrar o salir de un if o en un else de un condicional (y de estos hay muchos en esas páginas), y de esta forma pueda estar sobrecargando el servidor.

Aparte de esto, si supuestamente se quedase algo abierto, tengo la duda respecto al tiempo en el que tardan en cerrarse esos objetos de forma automática (si es que el servidor los cierra de alguna forma automáticamente). Es decir, ¿se quedan abiertos hasta que no se reinicia IIS?, ¿se quedan abiertos hasta que el usuario no abandona la web y expiran sus sesiones?. La verdad es que no tengo ni idea de como funciona esto, y disculpad si estoy preguntando alguna chorrada.

Gracias por prestarme parte de vuestro tiempo.

SalU2
  #2 (permalink)  
Antiguo 23/03/2005, 06:07
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
De acuerdo

interesante.


La verdad es que tu forma de trabajar es una de las mas NO recomendables que pueda existir en el planeta tierra.
Tu ya, solo por ahorraste ficheros, tienes tremendos problemas para seguir la ejecuccion de un programa, ya que metes todo dentro de una pagina.
Imagina que te cuesta ati, que tu escribiste el codigo. Imagina eso si no lo hubieras hecho tu, y tuvieras que mantener un sistema programado de esa manera ... ES UN PARTO SIN ANESTESIA. Creeme!

Ademas que ganas con hacer las cosas asi??
Nada de hecho. Ahorrarte ficheros? para que? cual es el punto de ahorrarse ficheros? No tiene sentido, es contra producente y solo te acarrea dolores de cabeza.

El truco esta en separar lo mas posible las cosas . Recuerdas a napoleon? "Dividir para conquistar"
Y aprender a trabajar con funciones y sub rutinas, de tal manera que el codigo sea entendible al ojo humano y no haya que ser experto en criptografia jerogrifica para entender el codigo.

capichi?

Por otro lado. Parezco disco rayado, pero es verdad. En la biblioteca de funciones alguien publicó una funcion que cierra todos los objetos que estan abiertos en la sesion.


Sobre si es que los objetos se cierran al terminar de ejecutarse la paginas ASP, yo tengo entendido que NO.
Hay que cerrarlas explicitamente y asi liberar la memoria del servidor web y otros servidores como Bases de datos o de APIS que se pudieran estar usando.

Existe el MITO que en la documentacion del ISS5 dice que los objetos son eliminados al terminar de ejecutar el script asp , pero a mi no me consta asi que no lo puedo decir con propiedad.

eso.

Espero haber ayudado. Buena suerte
  #3 (permalink)  
Antiguo 23/03/2005, 06:36
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Gracias Muzztein por la explicación. Voy a mirar la biblioteca (aunque la he mirado muchas veces y no he visto eso).

La verdad es que yo no me dedico profesionalmente al mundo de la informática, pues solo lo hago por ocio y diversión, para tener una web personal (bueno, junto a otro amigo), y la técnica de ir por partes (como Jack el destripador), no la aplico, porque eso que programo lo veo solo yo, así que "yo me lo guiso, yo me lo como". Funciones y rutinas si que meto para ahorrar líneas. Eso de tener todo en una página (siempre y cuando sea posible), es una deformación profesional (por aquello de la economididad de recursos), aunque en las últimas páginas que estoy montando, empiezo a trabajar algo más "por partes", por un motivo: pierdo horas revisando todo, de lo extensos que son algunos ficheros (contrasentido: aquí ya no hay economicidad del recurso "tiempo").

No obstante, aparte de esa rutina que cierra los objetos abiertos, ¿existe "algo" que informe de los objetos abiertos?.

Gracias anticipadas.
  #4 (permalink)  
Antiguo 23/03/2005, 08:40
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Mmmmmm, en la biblioteca no está esa función a la que hacía referencia Muzztein. ¿Se habrá perdido en el espacio sideral?.
  #5 (permalink)  
Antiguo 23/03/2005, 10:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Creo que no estaba realmente en el mensaje de la biblioteca de clases.. etc, sino como respuesta a un mensaje de otro forero (si es la que yo pienso que Muzztein se refiere)... Y más o menos se trataba de crear un array con los nombres de objetos que comunmente usamos y, recorriendo ese array, preguntar si ese nombre pertenece a un objeto y si ese objeto está abierto. Si lo está, cerrarlo. En pseudocódigo sería:

Código:
strPosiblesObjetos = "conn,oconn,objconn,conexion,rs,rs1,rs2,etc"
arrPosiblesObjetos = split(strPosiblesObjetos, ",")

for i = 0 to ubound(arrPosiblesObjetos)
if EsObjeto arrPosiblesObjetos(i) then cerrarObjeto arrPosiblesObjetos(i)
next
__________________
...___...
  #6 (permalink)  
Antiguo 23/03/2005, 11:23
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Mmmmmm, pero eso implica no cerrarlos previamente. Bueno, tampoco es mala opción para casos de extrema necesidad.

Gracias Al Zuwaga.
  #7 (permalink)  
Antiguo 23/03/2005, 12:12
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Cita:
pero eso implica no cerrarlos previamente
Pero... ¿no se trataba de eso o no entendí bien? (recordá que hoy es miércoles y estamos promediando la semana... tal vezmañana esté en mi "plenitud mental", pero hoy no lo puedo asegurar ;)
__________________
...___...
  #8 (permalink)  
Antiguo 23/03/2005, 12:27
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Bueno, a ver si lo explico con un simil (aunque el ejemplo nunca me ha pasado, que no soy tan despistado, jajajaja).

Cuando me lavo las manos, suelo cerrar el grifo, pero imagina que por las prisas, me llama al teléfono una rubia de 90-60-90 y tengo que dejar todo a medias (al grifo abierto, me refiero, el resto de lo que tenga que suceder con la rubia, espero no dejarlo a medias), ...pues bien, entonces cuando he acabado de hablar por teléfono, tengo que salir para pasar a recogerla (no está la cosa como para decirle que no), y cuando estoy en la calle, pienso: ¿habré cerrado el grifo?.

O sea, no pretendo cerrar el grifo a la fuerza (con el array), lo cual implicaría dejarlo abierto por narices, ...sino saber si está o no cerrado el maldito grifo (que no está la vida como para derrochar agua). O lo que es lo mismo, quería saber si se podía evaluar de alguna forma, si me había dejado algún objeto abierto (llámese grifo, o sujetador de la rubia), sin necesidad de forzar su cierre.

Igual con el simil ha quedado menos claro, jajajajaa, pero es que, afortunado de mí, mañana no trabajo, el viernes tampoco, y el lunes tampoco, así para mí hoy ya es viernes, y como podeis imaginar, estoy pensando más en la rubia (aunque si es morena, tampoco le voy a hacer ascos), que en si me he dejado los grifos abiertos

Os leo (para aprender, como siempre), el martes que viene. Buenas vacaciones de semana santa a quien las haga.

Bye!.
  #9 (permalink)  
Antiguo 23/03/2005, 12:57
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Jejeje, vale. Pero se supone (o yo lo supongo) que si EsObjeto quiere decir que está... mmm... no.. abierto no... sino instanciado.

Dejá que hago pruebas porque igual lo anterior es sólo algo teórico.
__________________
...___...
  #10 (permalink)  
Antiguo 23/03/2005, 13:12
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Igual acá está el post que Muzztein hacía referencia:
http://www.forosdelweb.com/showthrea...light=isobject

saludos
__________________
...___...
  #11 (permalink)  
Antiguo 27/03/2005, 11:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Nota: Antes de nada decir que respondo aquí, porque está mínimamente relacionado y porque así subo este tópic que estaba abajo y que me parece interesante (aunque lo que voy a preguntar seguramente debería ocupar un tópic aparte).

Esa manera de trabajar que tiene 3pies es la que, aunque no sigo, a veces me veo "forzado" a hacerla por ahorrar líneas de código. Me explico:

Trabajo con formularios recursivos, que se van llamando a sí mismos, hasta que llegados a un punto (en el que el usuario pulsa el botón "Go", o el que sea), se mandan dichos datos para ser insertados en la base de datos (o lo que tenga que pasar). Entonces, para mí es más cómodo, ya que el formulario se llama a sí mismo, y en el ACTION sólo puedo poner una página, el hacer un "if" y ver si el usuario pulsó el botón "Go" para que comience a hacerse lo que yo quería que se hiciese, que hacer un complicado método para redireccionar a otra página (que lo haría, y de hecho lo hice una vez, haciendo que se recojan todos los datos en "input" ocultos y después se reenvíen al formulario2 que yo quería). Si alguien sabe de algún método mejor para que cuando se llegue a un formulario "definitivo", se reenvíe a otra página, que me lo diga (así mismo, podéis comentarme si es preferible el guardar todo en "cajas" "hidden" y mandarlo a otra página, a no hacerlo y hacer lo que yo quería hacer (por ejemplo, registro de usuario) en esa misma página).

Saludos
  #12 (permalink)  
Antiguo 29/03/2005, 01:54
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Gracias Al Zuwaga...

Desconocía el uso de "objeto.State=1" del ejemplo anterior, para comprobar si el objeto estaba abierto.

Como dijo alguien: Nunca te acostarás sin aprender algo nuevo.
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 14:55.