Contador Visitas

07/03/2004 - 06:29 por axl | Informe spam
Hola a todos! alguien sabe alguna forma de poner un contador de visitas sin
usar base de datos ni el global.asa
????

lo que pasa es que hice unas pruebas con el global.asa pero si reinicias el
servidor se reinicia el contador

de antemano muchas gracias por su ayuda.

Saludos!

Preguntas similare

Leer las respuestas

#1 Benjamin Porter
07/03/2004 - 05:31 | Informe spam
Primero que todo, quisiera preguntarte por qué sin base de datos... Mira, el
punto es el siguiente: tal como tu señalaste, con el global.asa
(probablemente guardabas en una variable de aplicacion) los datos se te van
si reinicias el servidor. Esto ocurre porque estos datos están guardados en
variables que por definición son volátiles: se borra su contenido al
reiniciar el servidor. Entonces, necesitas un soporte lógico estable (es
decir, no la memoria). Para esto tienes dos alternativas:

1) Base de datos
2) Archivo de texto. Este lo manipulas con FSO.

Lo que me extraña un poco es lo siguiente: Primero, una base de datos es mas
facil de manejar para estos efectos que un archivo de texto; y segundo,
ignoro qué servidor ASP sí te da FSO pero no te da acceso a BD...

No se me ocurre otra forma al menos en este momento... pero sería bueno que
nos contaras por qué debe ser sin base de datos, quizás te podamos ayudar
con alguna alternativa...




Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")









"axl" escribió en el mensaje
news:%23SDGCO$
Hola a todos! alguien sabe alguna forma de poner un contador de visitas


sin
usar base de datos ni el global.asa
????

lo que pasa es que hice unas pruebas con el global.asa pero si reinicias


el
servidor se reinicia el contador

de antemano muchas gracias por su ayuda.

Saludos!




Respuesta Responder a este mensaje
#2 danicastillo
07/03/2004 - 11:53 | Informe spam
Deacuerdo con tus opciones, tampoco se me ocurre otra =)

de todas formas en algunos casos el contador en un fichero de texto va mucho
mejor, simplemente porque es mas rapido (la mecanica seria abrir archivo,
leer, cerrar, pasar a numero la unica linea, incrementar, y sobreescribir el
archivo, en bases de datos solo la conexion costara mas tiempo) aunq la bbdd
da mucho mas detalle (puede hacerse por dias, incluir horas de visita, ip's
etc) si es solo un contador y no son estadisticas reales yo usaria texto, si
queremos un poco mas de control , tener historico de visitas por dia, etc,
bbdd

por poner un ejemplo, para unas estadisticas de visita de una pagina estamos
usando bbdd , pero para unos "logs de acceso" a una zona restringida uso
archivos de texto para no sobrecargar el sistema, para cada entrada nueva al
log simplemente abro el fichero "del dia" y le añado la linea que me
interesa


-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Benjamin Porter" escribió en el mensaje
news:uodgFs$
Primero que todo, quisiera preguntarte por qué sin base de datos... Mira,


el
punto es el siguiente: tal como tu señalaste, con el global.asa
(probablemente guardabas en una variable de aplicacion) los datos se te


van
si reinicias el servidor. Esto ocurre porque estos datos están guardados


en
variables que por definición son volátiles: se borra su contenido al
reiniciar el servidor. Entonces, necesitas un soporte lógico estable (es
decir, no la memoria). Para esto tienes dos alternativas:

1) Base de datos
2) Archivo de texto. Este lo manipulas con FSO.

Lo que me extraña un poco es lo siguiente: Primero, una base de datos es


mas
facil de manejar para estos efectos que un archivo de texto; y segundo,
ignoro qué servidor ASP sí te da FSO pero no te da acceso a BD...

No se me ocurre otra forma al menos en este momento... pero sería bueno


que
nos contaras por qué debe ser sin base de datos, quizás te podamos ayudar
con alguna alternativa...




Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")









"axl" escribió en el mensaje
news:%23SDGCO$
> Hola a todos! alguien sabe alguna forma de poner un contador de visitas
sin
> usar base de datos ni el global.asa
> ????
>
> lo que pasa es que hice unas pruebas con el global.asa pero si reinicias
el
> servidor se reinicia el contador
>
> de antemano muchas gracias por su ayuda.
>
> Saludos!
>
>
>
>


Respuesta Responder a este mensaje
#3 Benjamin Porter
07/03/2004 - 15:19 | Informe spam
De acuerdo Dani, pero hay un problema con el archivo de texto: como bloqueas
el archivo de texto para evitar que dos sesiones lo abran o cierren
simultáneamente... en sitios donde tienes alta audiencia, ocurre eso
fácilmente. En toda base de datos existe por definición el bloqueo de
registros, pero no en la apertura de un archivo de texto... :(


Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")




"danicastillo" escribió en el
mensaje news:%
Deacuerdo con tus opciones, tampoco se me ocurre otra =)

de todas formas en algunos casos el contador en un fichero de texto va


mucho
mejor, simplemente porque es mas rapido (la mecanica seria abrir archivo,
leer, cerrar, pasar a numero la unica linea, incrementar, y sobreescribir


el
archivo, en bases de datos solo la conexion costara mas tiempo) aunq la


bbdd
da mucho mas detalle (puede hacerse por dias, incluir horas de visita,


ip's
etc) si es solo un contador y no son estadisticas reales yo usaria texto,


si
queremos un poco mas de control , tener historico de visitas por dia, etc,
bbdd

por poner un ejemplo, para unas estadisticas de visita de una pagina


estamos
usando bbdd , pero para unos "logs de acceso" a una zona restringida uso
archivos de texto para no sobrecargar el sistema, para cada entrada nueva


al
log simplemente abro el fichero "del dia" y le añado la linea que me
interesa


-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Benjamin Porter" escribió en el mensaje
news:uodgFs$
> Primero que todo, quisiera preguntarte por qué sin base de datos...


Mira,
el
> punto es el siguiente: tal como tu señalaste, con el global.asa
> (probablemente guardabas en una variable de aplicacion) los datos se te
van
> si reinicias el servidor. Esto ocurre porque estos datos están guardados
en
> variables que por definición son volátiles: se borra su contenido al
> reiniciar el servidor. Entonces, necesitas un soporte lógico estable (es
> decir, no la memoria). Para esto tienes dos alternativas:
>
> 1) Base de datos
> 2) Archivo de texto. Este lo manipulas con FSO.
>
> Lo que me extraña un poco es lo siguiente: Primero, una base de datos es
mas
> facil de manejar para estos efectos que un archivo de texto; y segundo,
> ignoro qué servidor ASP sí te da FSO pero no te da acceso a BD...
>
> No se me ocurre otra forma al menos en este momento... pero sería bueno
que
> nos contaras por qué debe ser sin base de datos, quizás te podamos


ayudar
> con alguna alternativa...
>
>
>
>
> Atentamente
> _____________________
> Benjamin Porter
>
> (Evidentemente sin el ".punto")
>
>
>
>
>
>
>
>
>
> "axl" escribió en el mensaje
> news:%23SDGCO$
> > Hola a todos! alguien sabe alguna forma de poner un contador de


visitas
> sin
> > usar base de datos ni el global.asa
> > ????
> >
> > lo que pasa es que hice unas pruebas con el global.asa pero si


reinicias
> el
> > servidor se reinicia el contador
> >
> > de antemano muchas gracias por su ayuda.
> >
> > Saludos!
> >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 danicastillo
07/03/2004 - 20:20 | Informe spam
yaps, depende de lo critico que sea el asunto de contar las visitas, incluso
podria "ignorarse" el tema, si una visita recibe error al abrir para
escritura pues simplemente no escribe =) -solucion salomonica jajaja-

la solucion mas estandar seria usar semaforos, una variable de aplicacion,
rezando por que no se bloqueen por siempre los archivos y suponiendo (que
supongo que si) concurrencia en asp (si asp no fuera concurrente no habria
problema con bloqueos asi que ...)

algo asi:

while application("semaforo_contador")="1"
' no hago nada, solo espero
wend
' si estoy aqui es pq valia 0 o null (primera visita despues de un reinicio)
application("semaforo_contador")="1"
.. abro archivo, leo , incremento, y guardo
' y ahora liberamos el semaforo
application("semaforo_contador")="0"


lo malo de la solucion basada en semaforos es la "muerte subita" de algun
proceso dentro de la apertura del fichero (no deberia suceder claro, pero a
la larga sucedera ;)
otro problema (si nos ponemos aun mas serios!) las condiciones del bucle
¿cuan concurrente es asp? es decir, si va instruccion a instruccion la hemos
fastidiado jeje, pq todos los procesos esperando saldran en el mismo momento
del bucle ! (tipo semaforo de verdad cuando cambia a verde!)

una solucion parcial es que dentro del bucle, en lugar de no hacer nada,
espere un numero de milisegundos aleatorio para cada proceso , pero eso es
una solucion parcial que puede fallar (y que ademas decrementa el
rendimiento , pq muchas veces quedaran esperando sin hacer nada util ...)

lo ideal en semaforos es tener una instruccion "atomica" (indivisible por
concurrencia) de comparacion y asignacion todo junto, pero en asp no existe
que yo sepa

con application.lock podemos intentar simularla (el codigo de abajo no esta
probado pero espero que funcionara)

application.lock
application("semaforo_contador")="1"
.. abro archivo, leo , incremento, y guardo
' y ahora liberamos el semaforo
application("semaforo_contador")="0"
application.unlock

un problema derivado esque bloqueamos todo el objeto application mientras
esperamos :| supongo que el codigo se podria intentar optimizar pero
dificil porque asp tampoco da muchas facilidades para trabajo con semaforos
independientes , tambien convendria ser cuidadosos con los errores dentro de
este proceso (y q en caso de cualquier error liberara app)

-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Benjamin Porter" escribió en el mensaje
news:
De acuerdo Dani, pero hay un problema con el archivo de texto: como


bloqueas
el archivo de texto para evitar que dos sesiones lo abran o cierren
simultáneamente... en sitios donde tienes alta audiencia, ocurre eso
fácilmente. En toda base de datos existe por definición el bloqueo de
registros, pero no en la apertura de un archivo de texto... :(


Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")




"danicastillo" escribió en el
mensaje news:%
> Deacuerdo con tus opciones, tampoco se me ocurre otra =)
>
> de todas formas en algunos casos el contador en un fichero de texto va
mucho
> mejor, simplemente porque es mas rapido (la mecanica seria abrir


archivo,
> leer, cerrar, pasar a numero la unica linea, incrementar, y


sobreescribir
el
> archivo, en bases de datos solo la conexion costara mas tiempo) aunq la
bbdd
> da mucho mas detalle (puede hacerse por dias, incluir horas de visita,
ip's
> etc) si es solo un contador y no son estadisticas reales yo usaria


texto,
si
> queremos un poco mas de control , tener historico de visitas por dia,


etc,
> bbdd
>
> por poner un ejemplo, para unas estadisticas de visita de una pagina
estamos
> usando bbdd , pero para unos "logs de acceso" a una zona restringida uso
> archivos de texto para no sobrecargar el sistema, para cada entrada


nueva
al
> log simplemente abro el fichero "del dia" y le añado la linea que me
> interesa
>
>
> -o|o|--
> -o|o| dani castillo
> -o|o| http://www15.brinkster.com/danic/
> -o|o| tutorial y trucos asp, vb, diseño
> -o|o|--
> "Benjamin Porter" escribió en el mensaje
> news:uodgFs$
> > Primero que todo, quisiera preguntarte por qué sin base de datos...
Mira,
> el
> > punto es el siguiente: tal como tu señalaste, con el global.asa
> > (probablemente guardabas en una variable de aplicacion) los datos se


te
> van
> > si reinicias el servidor. Esto ocurre porque estos datos están


guardados
> en
> > variables que por definición son volátiles: se borra su contenido al
> > reiniciar el servidor. Entonces, necesitas un soporte lógico estable


(es
> > decir, no la memoria). Para esto tienes dos alternativas:
> >
> > 1) Base de datos
> > 2) Archivo de texto. Este lo manipulas con FSO.
> >
> > Lo que me extraña un poco es lo siguiente: Primero, una base de datos


es
> mas
> > facil de manejar para estos efectos que un archivo de texto; y


segundo,
> > ignoro qué servidor ASP sí te da FSO pero no te da acceso a BD...
> >
> > No se me ocurre otra forma al menos en este momento... pero sería


bueno
> que
> > nos contaras por qué debe ser sin base de datos, quizás te podamos
ayudar
> > con alguna alternativa...
> >
> >
> >
> >
> > Atentamente
> > _____________________
> > Benjamin Porter
> >
> > (Evidentemente sin el ".punto")
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > "axl" escribió en el mensaje
> > news:%23SDGCO$
> > > Hola a todos! alguien sabe alguna forma de poner un contador de
visitas
> > sin
> > > usar base de datos ni el global.asa
> > > ????
> > >
> > > lo que pasa es que hice unas pruebas con el global.asa pero si
reinicias
> > el
> > > servidor se reinicia el contador
> > >
> > > de antemano muchas gracias por su ayuda.
> > >
> > > Saludos!
> > >
> > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#5 axl
08/03/2004 - 02:40 | Informe spam
Muchas Gracias, Dani y Benjamin,

lo que pasa es que tengo una pagina en un servidor que no da permiso de usar
base de datos, lo que hare es que voy a utilizar es archivos y para evitar
concurrencias intentare que cuando entre alguien a una session le sume a un
archivo y cuando entre otro le sume a otro archivo y asi consecutivamente, y
al final en la funcion que muestra el total sumare lo de los archivos
nop???????
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida