【问题标题】:What's the best way to get the data I want from Twitter?从 Twitter 获取我想要的数据的最佳方式是什么?
【发布时间】:2009-06-24 02:51:50
【问题描述】:

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

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

(我已经避免只在每次页面浏览时查询他们的服务器;我知道的足够多,知道这是不好的做法)

【问题讨论】:

    标签: rss twitter push ping


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      1. 请求检查以查看是否需要检索新的 Twitter 数据
      2. 检查锁表以查看是否有另一个请求正在与 twitter 通信
      3. 将记录添加到锁定表。确保在通过数据库约束设置为唯一的列中指定数据。这样你就不会弄两把锁了。
      4. 与 twitter 对话,保存 twitter 数据。
      5. 删除锁定记录

      为了速度,请确保您的锁表在内存中,或者改用 memcached。当然,如果您可以使用 memcached,那么您可能无论如何都可以完全控制 cron。 :)

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          每秒运行一次代码非常容易。

          // pseudocode
          while(1) {
              // do request
          
              // sleep 1 second
              sleep(1);
          }
          

          【讨论】:

          • 这如何回答这个问题?不允许他运行守护进程。毫无疑问,任何无限运行的进程都会被他的 ISP 杀死。
          • 问题在哪里指定?
          【解决方案5】:

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

          或者,为了优化多个文件的复制,您可以在单个 cron 行中添加对程序的多个调用。比如:

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

          【讨论】:

          • 进入什么程序?他在服务器上运行,只能执行 cron 作业和/或响应请求。
          • 什么意思是什么程序?执行 curl 调用、处理、插入数据库等的脚本或程序。
          猜你喜欢
          • 2017-06-30
          • 2015-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-09
          相关资源
          最近更新 更多