Enlaces recomendados

Publicidad

Usuarios en línea

estadisticas de usuarios online

Nuevo servicio: llamadas internacionales baratas

Acabamos de añadir a nuestra web un servicio de llamadas internacionales desde España a través de nuestro número 902 87 65 87.

Gracias a este servicio podemos llamar a multitud de destinos internacionales al precio de una llamada nacional y lo mejor es que no hace falta pagar nada extra, ni darse de alta.

Podéis ampliar información en la página de llamadas internacionales

 

Superadas las 100 webs en nuestro directorio

Poco a poco va creciendo el número de webs que utilizan nuestro servicio de usuarios en línea, y de estas ya son más de 100 las que han sido aceptadas para aparecer en alguna categoría de nuestro directorio.

Puesto que hay bastantes categorías y se van añadiendo nuevas conforme las necesitamos, es muy fácil que la web aparezca listada, aunque no tenga muchos usuarios en línea.

Gracias a todos.

 

Nuevo botón gráfico para los usuarios en línea

Para aquellos que os guste más un botón que un texto, hemos añadido esta posibilidad.

Para que resulte más fácil, ahora al dar de alta la web y/o seleccionar obtener código, tenemos dos ventanas con las dos opciones de código a copiar, como enlace de texto o como botón.

Si elegimos el código de botón, una vez instalado el código en nuestra web obtendremos un botón como el siguiente:

usuarios online

Con el número que corresponda con el número de usuarios en línea.

Ya tenemos pagerank

A los 5 meses de la puesta en marcha, ahorahay.com ya tiene asignado un pagerank 4 y este blog que empezó hace 3 meses también le han asignado pagerank, en este caso pagerank 3.

Como se puede ver en nuestra página de estadísticas tenemos ya más de 10.000 enlaces en yahoo, y aunque el número que reporta google es pequeño (70) sabemos que google no indica más que una selección de los enlaces reales.

Todo esto lo hemos conseguido gracias a las webs que utilizan el servicio y las que cumplen los criterios para aparecer en nuestro directorio se verán a la vez beneficiadas por aparecer listadas, las 10 con más usuarios en línea en la página principal y el resto en las subcategorias correspondientes a su temática.

Gracias a todos por utilizar el servicio.

 

El algoritmo de usuarios en línea

Este algoritmo se ejecuta cada vez que se visualiza una página de una web que tiene instalado el código, por tanto es muy importante optimizarlo para disminuir la carga del servidor.

De este algoritmo depende la escalabilidad del servicio, hay webs que pueden mostrar este código miles de veces al día.

  1. Obtenemos la página web que contiene el código:
    referer=request.servervariables(«HTTP_REFERER»)
    Esta información la transmite el navegador del usuario aunque existe software de ocultación de identidad que puede bloquear esta info.
  2. En caso de que no se disponga de esta información, el usuario no se contabilizará y por tanto al usuario en cuestión no se le informará de los usuarios en línea de esa web.Si referer no es nulo, eliminamos «http://www.» y todas sus variantes de la dirección y nos quedamos con el resto.
  3. Obtenemos el parámetro web.
    Este parámetro identifica la web y nos permite localizarla en nuestra base de datos o en las variables de aplicación. Hay que recordar que el servicio sólo funciona con webs registradas.En primer lugar se verifica que el parámetro es sintácticamente correcto. De no serlo se genera un mensaje de error y se finaliza.
    A continuación se busca el directorio asociado a esta web en una variable de aplicación. Si no existe la variable de aplicación significa que es la primera vez que se accede desde esa web (desde el último reinicio del servidor web).
    En este caso, hay que acceder a la base de datos y cargar el directorio de la web en la variable de aplicación, si no se encontrase se anotará en la variable de aplicación y se generará un mensaje de error. Además aprovechamos el acceso a la base de datos para cargar en otra variable de aplicación el número máximo de usuarios en línea y actualizar en la base de datos la fecha del último acceso.Si hemos llegado a este punto, tenemos garantizado que accedemos a una web registrada. Verificaremos que la página donde está instalado el código (referer) está contenida en el directorio de la web, de esta forma sólo contabilizamos accesos desde páginas de la web registrada, ignorando accesos desde páginas en cache de buscadores o accesos a mano.
  4. Comprobamos si tenemos variable de sesión asociada a la web. Si es así significa que el mismo usuario ya ha accedido desde otra página de esta web y por tanto no hay que contabilizarlo.Si no hay variable de sesión, la creamos y además añadimos el identificador de la web a una varible de sesión genérica (usu_activosc). Esto es necesario porque es posible que un mismo usuario acceda a varias webs distintas que usen nuestro código. En este punto incrementamos el contador de usuarios en línea asociado a esta web (variable de aplicación) y cuando finalice la sesión habrá que decrementar el contador de todas las webs asociadas a esta sesión, de ahí la importancia de la variable genérica.
    Voy a ilustrar esto con un ejemplo. Imaginar que un usuario accede desde la web 17, esto se reflejaría de esta forma:
    session(«usu_activos17»)=17
    session(«usu_activosc»)=17
    Si posteriormente ese mismo usuario accede desde la web 23 a nuestro servicio, se reflejará de esta forma:
    session(«usu_activos23»)=23
    session(«usu_activosc»)=17,23
    Cuando pasen más de 20 minutos que ese usuario no accede a nuestra plataforma, se ejecutará la función de cierre de sesión de global.asa que consultará session(«usu_activosc») y decrmentará los contadores de todas las web de la lista (17 y 23, en nuestro ejemplo)
  5. Obtener la IP del usuario y añadirla a una lista mantenida en una variable de aplicación asociada al codigo de la web. Si previamente no estaba la IP en la lista incrementaremos el contador de usuarios en línea. De esta forma evitamos contar accesos realizados desde la misma IP como usuarios distintos.Además incrementaremos contadores totales y compararemos valores de los contadores modificados con los valores máximos para actualizar los máximos en caso de que se superen. En caso de que se alcance un máximo se actualiza la base de datos con la información.
  6. Generar el código javascript con el valor del contador.

Y eso es todo lo que se hace cada vez que una página de una web que tiene el código instalado es cargada en un navegador de un usuario.

El archivo global.asa

En el servidor IIS de Windows, el archivo global.asa es un archivo de configuración relacionado con las aplicaciones ASP.

En este fichero se definen 4 funciones, dos de inicio y dos de terminación.

La funciones son

SUB Application_OnStart
  ‘ Esta función se ejecuta cuando arranca la aplicación (arranque del servidor)
  ‘ En AhoraHay se inicializan variables de aplicación leyendo algunos de los
  ‘ valores de la base de datos
END SUB

SUB Application_OnEnd
  ‘ Esta función se ejecuta cuando se detecta que se va a terminar la aplicación
  ‘ Normalmente será cuando se reinicia el servidor web
  ‘ En AhoraHay se actualiza la base de datos con los valores de las variables
END SUB

SUB Session_OnStart
  ‘ Esta función se ejecuta cuando se detecta un inicio de sesión (primer acceso
  ‘ de un usuario a una página asp)
  ‘ En AhoraHay no se utiliza esta función
END SUB

SUB Session_OnEnd
  ‘ Esta función se ejecuta cuando finaliza una sesión (se sobrepasa el tiempo
  ‘ límite sin actividad, 20 minutos en nuestro caso)
  ‘ En AhoraHay se utiliza esta función para decrementar el contador de usuarios
  ‘ en línea de las webs asociadas a la sesión
END SUB

Estas funciones se suelen utilizar variables de aplicación y variables de sesión.

Una variable de aplicación, es una variable global accesible desde cualquier página web de cualquier usuario, mientras que una variable de sesión es una variable local para cada usuario, accesible desde cualquier página asp de un sólo usuario, y  que desaparece cuando finaliza la sesión.

En AhoraHay tenemos varias variables de aplicación asociadas a valores globales, como por ejemplo los máximos de usuarios en línea, el número de veces que se ha servido el código, el número de webs en el directorio, etc. Cada web que utiliza el servicio tiene a su vez asociadas sus variables de aplicación de las que destaca el número de usuarios en línea y la lista de direcciones IP de estos usuarios.

En cuanto a las variables de sesión, se utiliza una por usuario donde se guarda la lista de webs a las que está accediendo, ya que un mismo usuario podría estar accediendo a más de una web suscrita al servicio.

Todas estas variables combinadas con la base de datos permiten el funcionamiento del servicio.

En próximos artículos hablaré de la base de datos y de en que momentos se accede a ésta.

Un truco, cuando se realiza una modificación del global.asa, la aplicación se reinicia, borrándose todas las variables de apliación y sesión, por lo que si necesitamos reiniciar la aplicación basta con que reescribamos el archivo global.asa.

Tecnología de AhoraHay

El servicio AhoraHay está diseñado sobre un servidor web Windows, utiliza programación ASP y base de datos MS SQL Server. En estos momentos está ubicado en un servidor dedicado administrado de la empresa Arsys. Este servidor se comparte con otras webs del grupo Joseane, como por ejemplo joseane.com, deciclismo.com y actualidadsims.com, y algunas webs de clientes de EmpresaWWW.com.

Este servicio tiene un coste mensual bastante elevado, pero dada la importancia de las webs que contiene, compensa. Todas las webs que hay en este servidor las administro yo en exclusiva con lo que me da seguridad en la estabilidad del servidor.

Por otro lado, este blog está funcionando sobre un servidor Linux con PHP y con el software WordPress, base de datos MySQL. El servidor es un servidor privado de la empresa OVH, ubicado físicamente en Francia.

Respecto a este servidor, indicar que es una versión muy económica de un servidor dedicado, y lo tengo en fase de evaluación, de momento funciona bastante bien, pero me quita bastante tiempo pues éste no es administrado y me gusta probar bastantes aspectos para estudiarlo como posible oferta de futuro en los planes de hospedaje de empresawww.com

Cómo se contabilizan los usuarios en línea

Voy a iniciar una serie de entradas en las que intentaré explicar como funciona el servicio de usuarios en línea de AhoraHay.

Cuando accedemos a una página web con nuestro navegador, éste descarga la página y la analiza, buscando referencias a otros archivos del servidor web o de servidores externos que debe descargar para poder visualizar la página correctamente: imágenes, archivos de hojas de estilo, archivos javascript, películas flash …

El servidor web por su parte, al identificar el primer acceso de un usuario, establece lo que se denomina una sesión. Asociada a la sesión se puede guardar información que permite al servidor web mantener un estado en el acceso a distintas páginas. Por ejemplo, cuando nos identificamos con un usuario y contraseña, podemos acceder a una zona privada de la web sin tener que volver a escribir esta información en cada acceso.

Las sesiones se mantienen activas hasta que ha pasado un tiempo sin que el usuarios haga ningún acceso adicional al servidor web. Un valor típico son 20 minutos.

El contador de usuarios en línea de AhoraHay, contabliza un usuario en línea cuando detecta el primer acceso del usuario, pero ignora todos los accesos posteriores de ese mismo usuario mientras se mantenga la sesión abierta (hasta que hayan pasado 20 minutos desde el último acceso).

Por tanto, cuando el contador indica que hay 5 usuarios en línea, significa que en los últimos 20 minutos se han detectado 5 usuarios distintos.

El código que se instala en las páginas de la web que se quiere monitorizar, accede a una página de ahorahay.com para cargar un javascript, si es la primera vez que el usuario accede a la página creará una nueva sesión en AhoraHay y se anotará un nuevo usuario en el marcador de la web.

Cuando una sesión finaliza (hay 20 minutos de inactividad) se genera un evento de fin de sesión que se utiliza para decrementar el marcador de usuarios en línea.

Esto es lo básico, pero hay unas cuantas cuestiones que hay que considerar:

  1. Un mismo usuario puede abrir varias sesiones. De hecho ocurre con relativa frecuencia, y si no se tiene en cuenta falsearía el resultado, dando más usuarios de los que realmente son.
    La solución a este problema es tener en cuenta la dirección IP.
  2. Puede que un usuario acceda a varias webs que usen el servicio de AhoraHay, por ejemplo si un usuarios está en el directorio de AhoraHay visitando distintas webs. En este caso sólo se crea una sesión para varias webs, pero hay que contablizarlo en cada una por separado:
    La solución es usar varibles de sesión personalizadas con el código de la web.
  3. Puede que el código se ejecute desde fuera de la web (en una cache de google, alguíen copie el código en otra web, …)
    No hay que contablizar usuarios que no vengan de la web.
  4. Hay que reducir al máximo la carga en el servidor (minimizar accesos a bases de datos, reducir consumo de recursos, etc.)
    Esto es necesario pues el código se ejecuta en cada acceso a cada página de todas las webs que utilicen el servicio y estos pueden ser muchos accesos.
  5. Hay que capturar información de los usuarios de cada web para poder mostrar las estadísticas detalladas.

Y esto es todo de momento. En próximos artículos entraremos en algunos detalles de implementación.

 

Un servicio gratuito. ¿dónde está la trampa?

Cuando empecé a hacer mis primeras páginas de joseane.com en el año 2000, me llamó la atención un servicio de estadísticas gratis que todavía sigo utilizando en mis páginas: ademails y entonces me preguntaba ¿porqué hacer una inversión en servidores, programación, etc. para ofrecer un servicio gratuito?.

Ahora lo tengo bastante claro, para obtener popularidad. La popularidad lo es todo en Internet, y ofrecer servicios gratuitos es una buena forma de ganarse la popularidad. Hay empresas que invierten miles de euros en publicidad con el objetivo de dar a conocer sus productos. Invertir 50 – 100 – 200 Euros/mes en promoción en Internet es algo muy asumible, y yo prefiero invertirlos en infraestructura para mantener un servicio gratuito como AhoraHay.

La popularidad al final se traduce en visitas, y las visitas bien enfocadas se traducen en beneficios: anuncios de pago, patrocinadores, promoción de otros servicios propios, etc.

Pero no hay que cegarse, la popularidad se adquiere dando un buen servicio, gratuito no significa cutre, el servicio le tiene que interesar al webmaster y este valora fundamentalmente el no intrusismo. Volviendo al ejemplo de ademails, te instalas un código en tu web y a funcionar, no recibes correos publicitarios, no aparecen popus misteriosos cuando se accede a tus páginas, no te instalan enlaces ocultos a otras webs que no tienen nada que ver con el servicio …

Todo esto son cosas que otros servicios similares han hecho y que desde luego mi servicio no va a hacer.

Por último quiero añadir algo al servicio de ahorahay, y es la información y la comunicación. A través de este blog quiero mantener informado a los usuarios sobre el funcionamiento del servicio, dando la opción de paticipar con los comentarios y también la comunicación directa mediante el formulario de contacto.

¿Conseguiremos que AhoraHay sea muy popular?

Presentación del blog

Hola amigos,

Ponemos en marcha el blog de nuestro servicio de usuarios en línea AhoraHay.com. Nuestro objetivo, comentar todas las características del servicio y las novedades, pero también, puesto que el servicio va dirigido a la comunidad de webmasters, ir añadiendo información que hemos ido recopilando en la puesta en marcha del servicio.

En nuestrá página de información presentamos a los autores de este blog y damos las directrices de uso.

Esperamos que la información os resulte útil.

Joseán Escat