0

現在、Twitter のデータを MySQL に保存しています。私のホストでは 1 時間ごとに cron ジョブしか実行できないため、リアルタイムの結果を半シミュレートするために、同じファイルを 6 回コピーし、10 分ごとに 1 回実行しました (ホストでは 1 時間ごとのオフセットを制御できます)。これはばかげていると思います。

データを自分のやり方でプッシュすることについて学ぶことができるメカニズムはありますか? ご意見やご提案は大歓迎です。

(私は、ページビューごとにサーバーにクエリを送信することから自分自身を遠ざけました。それが悪い習慣であることを十分に知っています)

4

5 に答える 5

1

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

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

それ以外の場合は、次の bash スクリプトを 1 時間ごとに実行できます。

#!/bin/bash

for (( i = 0; i < 6; i += 1 )); do
    /usr/bin/curl 'http://yourserver.com/twitter'
    sleep 600
done
于 2009-06-24T02:57:42.810 に答える
1

リクエストからトリガーされた Twitter データを正常に取得できます。少し難解ですが、基本的にはロック データをテーブルに格納して、N 分ごとに (または必要なときに) 1 つの要求だけが Twitter からデータをポーリングするようにします。例:

  1. 新しい Twitter データを取得する必要があるかどうかを確認するリクエスト チェック
  2. ロックテーブルをチェックして、別のリクエストがすでに Twitter と通信しているかどうかを確認します
  3. ロックテーブルにレコードを追加します。データベース制約によって一意に設定されている列にデータを指定してください。これにより、2 つのロックを作成できなくなります。
  4. ツイッターに話しかけたり、ツイッターのデータを保存したり。
  5. ロックレコードを削除

速度を上げるには、ロック テーブルがメモリ内にあることを確認するか、代わりに memcached を使用してください。もちろん、memcached を使用できる場合は、とにかく cron を完全に制御できます。:)

于 2009-06-24T04:02:30.793 に答える
0

比較的単純な解決策は、別のコンピューターで cron ジョブを実行することです。Twitter へのリクエストを実行し、サーバー上の指定されたページ (例: http://foo.com/latestTwitterData ) に対して HTTP POST を実行します。もちろん、無作為にがらくたが送られてくるのを防ぐために、認証が必要になるでしょう。

これがあなたの状況に適しているかどうかはわかりません。

于 2009-06-24T02:58:13.277 に答える
-1

1 秒ごとにコードを実行するのは非常に簡単です。

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

    // sleep 1 second
    sleep(1);
}
于 2009-06-24T02:59:57.330 に答える
-1

プログラムに while ループを挿入してから、更新が必要な間に N 秒間スリープしないのはなぜですか? その後、59 分 30 秒後に死亡する可能性があります。

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

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

于 2009-06-24T03:01:55.810 に答える