2009-06-24 9 views
0

現在、TwitterデータをMySQLに保存しています。私のホストでは、毎回cronジョブを実行できるので、リアルタイム結果を半シミュレーションするには、同じファイルを6回コピーし、10分ごとに1つずつ実行します(ホストは時間オフセットを制御します)。これは馬鹿だと思う。私はTwitterから必要なデータを取得する最良の方法は何ですか?

データが自分の方法でプッシュされることがわかっているメカニズムはありますか?どんな考えや提案も大歓迎です。

(私はわずか各ページビューで自分のサーバーを照会から自分自身を操縦しました。私はそれが悪い習慣を知っているのに十分知っている)

答えて

1

どのようにホストされている(これはプログラムを実行します)Webページへのアクセスについてクライアント側(ホームシステム)でのcronに追加することで、サーバーで:

#!/bin/bash 

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

A:

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

そうでない場合は、次のbashスクリプト時間ごとに実行することができます比較的簡単な解決策は、別のコンピュータでcronジョブを実行することです。それはTwitterへのリクエストを行い、次にサーバ上の指定されたページ(例えば、http://foo.com/latestTwitterData)へのHTTP POSTを実行する。もちろん、ランダムな不正があなたに送られるのを防ぐために認証をしたいと思うでしょう。

あなたの状況に合っているかどうかわかりません。

-1

1秒ごとにコードを実行するのはかなり簡単です。

+0

これはどのようにして質問に答えますか?彼はデーモンを実行することはできません。間違いなく、無限に実行されているプロセスは、ISPによって殺されます。 –

+0

質問にはどこが指定されましたか? –

-1

あなたのプログラムにwhileループを入れてからN秒間待ってから更新する必要があるのはなぜですか? 59分30秒後に死ぬことができます。

また、複数のファイルのコピーを最適化するには、単一のcron行内で複数の呼び出しをプログラムに追加できます。ような何か:あなたはsanely Twitterのデータを引き出すことができる

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

+0

どのようなプログラムですか?彼はサーバー上で実行されており、cronジョブしか持たず、要求に応答することもできません。 –

+0

どのようなプログラムですか? curlコール、処理、dbへの挿入などを行うスクリプトまたはプログラム –

1

は、あなたのリクエストからトリガ。それは少し難解ですが、本質的には、ロックするデータをテーブルに格納して、N分ごとに(または必要なときはいつでも)1つの要求で確実にデータをポーリングします。例:

    新しいTwitterのデータが別の要求がすでに
  1. がテーブルをロックするレコードを追加Twitterに話しているかどうかを確認するために
  2. チェックロックテーブルを取得する必要がある場合
  3. リクエストチェックが参照するには。データベース制約を使用して一意に設定されている列にデータを指定してください。これにより、2つのロックを解除することができます。
  4. TwitterでTwitterのデータを保存してください。
  5. あなたのロックテーブルではなく、memcachedのメモリまたは使用中であることを確認し、ロックのレコードにスピードのために

を削除します。もちろん、memcachedを使うことができれば、とにかくcronを完全に制御できるでしょう。 :)

関連する問題