Pregunta

Actualmente estoy guardando algunos datos de Twitter en MySQL. Mi host solo me permite ejecutar trabajos cron cada hora, por lo tanto, para simular semimetálicamente los resultados en tiempo real, he copiado el mismo archivo 6 veces y ejecuto uno cada 10 minutos (el host te permite controlar el desplazamiento por hora). Esto es estúpido, creo.

¿Hay algún mecanismo sobre el que pueda aprender que empuje los datos a mi manera? Cualquier pensamiento o sugerencia bienvenida.

(Me he alejado de solo consultar su servidor con cada vista de página; sé lo suficiente como para saber que es una mala práctica)

¿Fue útil?

Solución

¿Qué hay de acceder a una página web (que a su vez ejecutará el programa) alojada en el servidor agregando a cron en el lado del cliente (sistema doméstico):

/usr/bin/curl http://yourserver.com/twitter

De lo contrario, puede ejecutar el siguiente script de bash cada hora:

#!/bin/bash

for (( i = 0; i < 6; i += 1 )); do
    /usr/bin/curl 'http://yourserver.com/twitter'
    sleep 600
done

Otros consejos

Puede extraer datos de Twitter activados de sus solicitudes. Es un poco esotérico, pero esencialmente almacena datos de bloqueo en una tabla para asegurarse de que solo una solicitud sondee los datos de Twitter cada N minutos (o cuando lo necesite). Ejemplo:

  1. Solicitar verificaciones para ver si es necesario recuperar nuevos datos de Twitter
  2. Verifique la tabla de bloqueo para ver si otra solicitud ya está hablando con Twitter
  3. Añadir registro a la tabla de bloqueo. Asegúrese de especificar los datos en una columna que se establece como única a través de una restricción de base de datos. Esto evitará que hagas dos cerraduras.
  4. Hable con twitter, guarde los datos de twitter.
  5. Eliminar registro de bloqueo

Para velocidad, asegúrese de que su tabla de bloqueo esté en la memoria o use memcached en su lugar. Por supuesto, si puede usar memcached, probablemente tenga control total sobre cron de todos modos. :)

Una solución relativamente simple es ejecutar un trabajo cron en otra computadora. Haría las solicitudes a Twitter y luego ejecutaría una POST HTTP a una página designada en el servidor (por ejemplo, http://foo.com / latestTwitterData ). Por supuesto, querrás tener autenticación para evitar que te envíen basura aleatoria.

No sé si esto es razonable para su situación.

Es bastante fácil ejecutar código cada segundo más o menos.

// pseudocode
while(1) {
    // do request

    // sleep 1 second
    sleep(1);
}

¿Por qué no simplemente poner un ciclo while en su programa y luego dormir N segundos entre el tiempo que necesite las actualizaciones? Luego puedes morir después de 59 minutos y 30 segundos.

Alternativamente, para optimizar la copia de múltiples archivos, puede agregar múltiples llamadas a su programa dentro de la única línea cron. Algo así como:

./prog.pl; dormir 60; ./prog.pl

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top