2009-06-24 6 views
0

В настоящее время я сохраняю данные Twitter в MySQL. Мой хост только позволяет мне запускать задания cron каждый час, поэтому, чтобы полусимулировать результаты в реальном времени, я скопировал один и тот же файл 6 раз и запускаю его каждые 10 минут (хозяин разрешает вам контролировать почасовое смещение). Думаю, это глупо.Каков наилучший способ получить данные из Twitter?

Есть ли какой-то механизм, который я могу узнать о том, что будет передавать данные по-моему? Любые мысли или предложения приветствуются.

(я направил себя от просто запрашивая их сервер с каждой страницы, я знаю достаточно, чтобы знать, что это плохая практика)

ответ

1

Как насчет доступа к веб-страницу (которая в свою очередь будет выполнять программу) размещенных на сервере, путем добавления к хрон на стороне клиента (домашняя система):

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

в противном случае, вы можете запустить следующую Баш скрипт каждый час:

#!/bin/bash 

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

A относительно простым решением является запуск задания cron на другом компьютере. Он выполнил бы запросы в Twitter, затем выполнил бы HTTP POST на назначенную страницу на сервере (например, http://foo.com/latestTwitterData). Конечно, вы хотели бы иметь аутентификацию, чтобы предотвратить отправку случайного дерьма.

Я не знаю, разумно ли это для вашей ситуации.

-1

Очень легко запускать код каждую секунду или около того.

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

    // sleep 1 second 
    sleep(1); 
} 
+0

Как это ответить на вопрос? Ему не разрешено запускать демона. Несомненно, любой бесконечно бегущий процесс был бы убит его провайдером. –

+0

Где это было указано в вопросе? –

-1

Почему бы не просто поместить цикл цикла в вашу программу, а затем спать N секунд между тем, как долго вам нужны обновления? Затем вы можете умереть через 59 минут 30 секунд.

В качестве альтернативы, чтобы оптимизировать копирование нескольких файлов, вы можете добавить несколько вызовов к вашей программе в пределах одной линии cron. Что-то вроде:

./prog.pl; sleep 60; ./prog.pl

+0

В какую программу? Он работает на сервере и может иметь только задания cron и/или отвечать на запросы. –

+0

Что вы подразумеваете под какой программой? Скрипт или программа, которая выполняет завитки вызовов, обработки, вставки в db и т. Д. –

1

Вы можете здраво вытаскивать данные щебет вызвали из ваших запросов. Это немного эзотерическое, но по существу вы храните данные блокировки в таблице, чтобы гарантировать, что только один запрос опросает данные из твиттера каждые N минут (или когда вам это нужно). Пример:

  1. Запрос проверяет, нуждается ли новые данные твиттер быть получены
  2. Проверьте таблицу блокировки, чтобы увидеть, если другой запрос уже разговаривает с щебет
  3. Добавить запись в таблицу блокировки. Обязательно указывайте данные в столбце, который устанавливается уникальным с помощью ограничения базы данных. Это не позволит вам сделать два замка.
  4. Поговорите с Twitter, сохраните данные щебета.
  5. Снять замок запись

Для скорости, убедитесь, ваша блокировка таблицы в памяти или использовать Memcached вместо этого. Конечно, если вы можете использовать memcached, у вас, вероятно, будет полный контроль над cron. :)