从Twitter获取我想要的数据的最佳方法是什么?

时间:2009-06-24 02:51:51

标签: rss twitter push ping

我目前正在MySQL中保存一些Twitter数据。我的主机只允许我每小时运行一次cron作业,所以为了半模拟实时结果,我复制了相同的文件6次,并且每10分钟运行一次(主机让你控制每小时的偏移量)。我认为这是愚蠢的。

是否有一些我可以了解的机制会以我的方式推送数据?欢迎任何想法或建议。

(我已经远离了每次查看页面查询他们的服务器;我知道这很糟糕的做法)

5 个答案:

答案 0 :(得分:1)

如何通过在客户端(家庭系统)添加到cron来访问服务器上托管的网页(进而执行程序):

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

否则,您可以每小时运行以下bash脚本:

#!/bin/bash

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

答案 1 :(得分:1)

您可以理智地提取您的请求触发的Twitter数据。它有点深奥,但基本上你将锁定数据存储在一个表中,以确保每N分钟(或任何你需要的时候)只有一个请求从twitter轮询数据。例如:

  1. 要求检查是否需要检索新的推特数据
  2. 检查锁定表以查看是否有其他请求已与twitter通话
  3. 将记录添加到锁定表。确保在通过数据库约束设置为unique的列中指定数据。这样可以防止你制造两把锁。
  4. 与Twitter交谈,保存推特数据。
  5. 删除锁定记录
  6. 要获得速度,请确保您的锁定表位于内存中或使用memcached。当然,如果你可以使用memcached,你可能无论如何都可以完全控制cron。 :)

答案 2 :(得分:0)

一个相对简单的解决方案是在另一台计算机上运行cron作业。它会向Twitter发出请求,然后对服务器上的指定页面执行HTTP POST(例如http://foo.com/latestTwitterData)。当然,您可能希望进行身份验证以防止随机垃圾邮件发送给您。

我不知道这对你的情况是否合理。

答案 3 :(得分:-1)

每隔一秒左右运行代码非常容易。

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

    // sleep 1 second
    sleep(1);
}

答案 4 :(得分:-1)

为什么不在你的程序中放一个while循环,然后在你需要更新之间的N秒之间休息?然后你可以在59分30秒后死亡。

或者,要优化复制多个文件,可以在单个cron行中为程序添加多个调用。类似的东西:

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