0

私はMySQLデータベースにタイムスタンプを保存しており、定期的に(たとえば毎秒)、現在の時刻とデータベースに保存されているタイムスタンプ値の差を(もちろんページをリロードせずに)更新して、5のようなものを表示したいと考えています分カウントダウンタイマー。たった今。setTimeout を使用して、この値を取得する AJAX リクエストを定期的に起動することを考えています。これは最善のアプローチですか?代わりに、クライアント側のタイマーを実行してから、1 分ごとにサーバー側のタイムスタンプと同期する必要がありますか?

注:このタイマーは、私の Web サイトで重要な機能を担っているため、かなり正確である必要があります。

編集: cronジョブは必要ありません。5:00から4:59、4:58などのWebページで自動的に更新されるカウントダウンタイマーが必要なだけです。Megaupload がシャットダウンされる前に持っていたものに精通している場合は、同様のものが必要です。

4

4 に答える 4

1

Javascriptの動作方法の性質上、正確なタイマーを実現することはほぼ不可能です(詳細については、これを参照してください)。

ただし、それに非常に近いことを行うことができます。実行したいのは、すべてクライアント側(ユーザーが改ざん可能ですが、リソース消費を最小限に抑えます)で実行し、さらに重要なことに、サーバー側の検証を使用して、ユーザーはそれを改ざんすることができます。したがって、最初にデータベースに「x時間より前に送信を受け入れない」という値を設定すると、クライアントはタイマーを処理できるようになります。

これがどのように行われるかについての非常に小さな例です

于 2012-08-10T14:09:04.150 に答える
1

それはあなたが何を達成したいかによって異なります。

たとえば、一般的に Web サイトに関連するものを 5 分ごとに処理する必要がある場合は、cron ジョブを使用します。

例ごとにコメント リストを更新してユーザー エクスペリエンスを向上させたい場合は、ajax を使用します。

于 2012-08-10T13:25:48.693 に答える
1

したがって、このすべてのストレスを備えたサーバーが必要です。

サーバーとクライアントの両方の時計には、両方で同じくらい長く続く秒があり、(非常に悪い場合)1週間かかる場合があると想定できます。

しかし、クライアントは 1972 年 1 月 1 日の真夜中であると考えているかもしれませんが、サーバーは 2012 年 8 月 10 日金曜日の 14:25 であると考えています。

したがって、その日付をサーバーからクライアントに渡すだけです。差分を計算します。ページでは、Javascript を使用するだけでサーバーの日付/時刻をページに配置できます。

Web サイト (サーバー ビット) に関しては、サーバーの時間に依存するだけです。あなたがコントロールできること。

カウントダウンタイマーは単なる楽しいものです。しかし、サーバーはあなたの資産であり、ビジネスを行う場所です。クライアントに依存している場合、厄介な人が時間をリセットできます。

于 2012-08-10T13:28:26.547 に答える
0

それを行うスクリプトを作成し、サーバーが実行されているOSに応じて、次のように1秒ごとに実行できます。

もし Linux { chronjob } http://www.thegeekstuff.com/2011/07/php-cron-job/

else if windows { windows scheduler } Windows スケジュール タスクを使用して PHP スクリプトを実行するにはどうすればよいですか?

これは、クライアント側スクリプトを実行する最も安全で効率的な方法です。

于 2012-08-10T13:28:34.407 に答える