Qual é a melhor maneira de obter os dados que eu quero de Twitter?
Pergunta
Atualmente estou poupando alguns dados do Twitter em MySQL. Meu anfitrião só me permite executar tarefas agendadas a cada hora, de modo a resultados em tempo real semi-simulados, eu copiei o mesmo arquivo 6 vezes, e executar uma a cada 10 minutos (o anfitrião deixa você controlar a hora offset). Isso é estúpido, eu acho.
Existe algum mecanismo que posso aprender sobre que iria empurrar os dados do meu jeito? Quaisquer pensamentos ou sugestões bem-vindos.
(Eu guiou-me longe apenas consultando o seu servidor com cada exibição de página, eu sei o suficiente para saber que é má prática)
Solução
Como sobre o acesso a uma página web (que por sua vez executa o programa) hospedado no servidor, adicionando a cron no lado do cliente (sistema de home):
/usr/bin/curl http://yourserver.com/twitter
Caso contrário, você pode executar o seguinte script bash cada hora:
#!/bin/bash
for (( i = 0; i < 6; i += 1 )); do
/usr/bin/curl 'http://yourserver.com/twitter'
sleep 600
done
Outras dicas
Você pode sanely puxar Twitter dados desencadeadas a partir de seus pedidos. É um pouco esotérico, mas os dados essencialmente você armazenar bloqueio em uma tabela para garantir apenas um pedido urnas a dados do Twitter a cada N minutos (ou sempre que você precisar). Exemplo:
- Pedido verifica se as necessidades de dados novo Twitter para ser recuperada
- tabela Verifique bloqueio para ver se outra solicitação já está falando Twitter
- Adicionar registro à tabela de bloqueio. Certifique-se de especificar os dados em uma coluna que é definida como única via uma restrição de banco de dados. Isto irá mantê-lo de fazer duas fechaduras.
- Fale com o Twitter, salvar os dados do Twitter.
- registro Remove bloqueio
Para a velocidade, garantir a sua mesa de bloqueio está na memória ou o uso memcached em seu lugar. Claro, se você pode usar memcached provavelmente você tem total controle sobre cron qualquer maneira. :)
Uma solução relativamente simples é executar um trabalho cron em outro computador. Ele faria os pedidos de Twitter, em seguida, executar um HTTP POST para uma página designada no servidor (por exemplo http://foo.com / latestTwitterData ). Claro, você gostaria de ter a autenticação para evitar porcaria aleatória sendo enviado a você.
Eu não sei se isso é razoável para sua situação.
É muito fácil de executar código cada segundo ou assim.
// pseudocode
while(1) {
// do request
// sleep 1 second
sleep(1);
}
Por que não basta colocar um loop while em seu programa e depois dormir N segundos entre no entanto tempo você precisa as atualizações? Você pode, então, morrer depois de 59 minutos e 30 segundos.
Como alternativa, para otimizar a reprodução de vários arquivos, você pode adicionar várias chamadas para o seu programa dentro da linha cron única. Algo como:
./prog.pl; sleep 60; ./prog.pl