2012-02-17 6 views
0

私は問題があり、少し混乱しています。私はstackoverflowでいくつかの研究を行いましたが、正確な解決策には到達できません。方法は何ですか? 6時間ごとにDBを挿入

Googleアナリティクスからいくつかのデータを取得していますが、この方法が遅すぎます。私は6時間ごとにGoogleからデータを取得し、DBに挿入してユーザーがデータを取得したいと思っています。私はDBからデータを取ってくるので、私のサイトではより高速です。

私の研究では、私はcronやmemcachedのようないくつかの解決策を見つけましたが、PHPではいくつかの機能を持つ方法はありますか?

phppマニュアルでは、私はtime()のようないくつかの機能を認識しています。私はtime()関数でそれを行うことはできますか?

+0

PHPを使用してスクリプトを作成し、6時間ごとにそれを繰り返すことができます。アプリケーションをコーディングしてから実行し、ループすることができます。 cronタスクが優れています。しかし、GoogleアナリティクスにはこのためのAPIはないと思いますか?私はGetClickyを試してみましょう - それはずっと良いとリアルタイムです。 – TheBlackBenzKid

+1

その問題は、PHPスクリプトがまだ実行する必要があることです。 cronジョブの中に入れた場合、ユーザーのトラフィックに関係なく6時間ごとに実行され、アナリティクスのリフレッシュをトリガーするユーザーであるため、遅いリクエストを受け取ったユーザーは発生しません。 TLDRのバージョンでは、PHPスクリプトなどをトリガーするcronジョブとして実行して、データを取得/処理します。 –

答えて

1

この方法で解決できます。 Googleのデータをデータベースに保存しますが、もう1つのフィールドを追加します。たとえば、last_update_timeのように、Googleから取得した時間を入力します。次回ユーザーがDBからデータを取得するときには、last_update_timeと現在の時刻の差を確認する必要があります。その後、それが6時間よりも大きい場合は、Googleから新しいデータを取得し、last_update_timeとしてDBに更新してください。
これにより、cronを使用できなくなります。

+1

ありがとうございます。可能な最善の方法はcronです。 –

+1

これにより、このキャッシュ更新プロセスの遅くて長い実行特性がユーザーに公開され、低速で実行されているWebサイトが表示されます。これは有効な提案ですが、この不足が指摘されている必要があります。 – Treffynnon

2

この問題は、cronjobで最もよく解決されます。 PHPにはジョブのスケジューリング用のシステムが組み込まれていません。

あなたのホストは、cronジョブは、あなたがChris Dukes' site上に挙げたもののようなホスティングサービスを使用することができない場合は、次の

彼のお気に入りを宣言しました私は仕事のためにGoogle Analyticsのグラフがあり、最新の統計情報を取得するために毎晩実行されるcronジョブを使用しています。私はそれらをデータベースに入れるのではなく、ファイルにJSONとしてキャッシュします。その後、jQuery flotを使用してレンダリングします。

関連する問題