我目前正在 MySQL 中保存一些 Twitter 数据。我的主机只允许我每小时运行一次 cron 作业,所以为了半模拟实时结果,我复制了同一个文件 6 次,每 10 分钟运行一次(主机允许你控制每小时的偏移量)。这很愚蠢,我想。
是否有一些我可以了解的机制可以按我的方式推送数据?欢迎任何想法或建议。
(我已经避免只用每个页面视图查询他们的服务器;我知道的足够多,知道这是不好的做法)
如何通过在客户端(家庭系统)添加到 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
您可以明智地提取从您的请求触发的 Twitter 数据。这有点深奥,但本质上您将锁定数据存储在一个表中,以确保每 N 分钟(或在您需要时)只有一个请求从 twitter 轮询数据。例子:
为了速度,请确保您的锁表在内存中或使用 memcached 代替。当然,如果您可以使用 memcached,那么您可能无论如何都可以完全控制 cron。:)
一个相对简单的解决方案是在另一台计算机上运行 cron 作业。它会向 Twitter 发出请求,然后执行一个 HTTP POST 到服务器上的指定页面(例如http://foo.com/latestTwitterData)。当然,您需要进行身份验证以防止向您发送随机垃圾。
我不知道这对你的情况是否合理。
每秒左右运行代码非常容易。
// pseudocode
while(1) {
// do request
// sleep 1 second
sleep(1);
}
为什么不在你的程序中放一个while循环,然后在你需要更新多长时间之间休眠N秒?然后你可以在 59 分 30 秒后死亡。
或者,要优化多个文件的复制,您可以在单个 cron 行中添加对程序的多个调用。就像是:
./prog.pl; sleep 60; ./prog.pl