0

特定の時間に1つのコードを実行する必要があるWebサイトを開発しています。

Cron Jobを作成するか、JavaScript Timing Eventまたは同様のものまたはJavaScriptを使用する方が、より速く、より適切な選択です。

4

4 に答える 4

4

あなたは2つのまったく異なることについて質問しています。

cronジョブはサーバーに基づいており、JavaScript(NodeJSを使用している場合を除く)はクライアントに基づいています。これが次のようなタスクであるかどうかによって異なります。

  • 実行する必要があり、クライアントに依存できない(たとえば、データが機密である)、または
  • クライアントの実行に依存する可能性があります(つまり、ブラウザウィンドウを開いたままにし、JavaScriptを有効にする必要があります)。

Cron(1)またはJavaScript(2)をそれぞれ選択します。

リンゴとオレンジの比較のようなものです。オレンジジュースとアップルパイのどちらがいいか教えてくれない限り、これ以上のお手伝いはできません。Cronはサーバー側のタスク実行の信頼性を高めるためのものであり、JavaScriptのタイムアウトはユーザーごと(またはクライアントごと)であり、実行の信頼性は低いことを覚えておいてください。

于 2012-09-14T23:44:03.763 に答える
2

これは、特定の時間に実行する必要のあるコードの性質に完全に依存します。

誰かがWebサイトを閲覧しているかどうかに関係なく、毎日午後2時などに発生する必要がある場合は、cronジョブを使用する必要があります。

一方、ユーザーごとに特定の時間に実行する必要がある場合(つまり、一定のアイドル時間の後にユーザーをページから自動的にログアウトするため)、適切な呼び出しはJavascriptタイミング関数です。

Javascriptタイミング関数は、誰かが実際にページを見ている場合にのみ機能し、その後、複数のユーザーに対して複数回呼び出されます。これは、状況に応じて望ましい場合と望ましくない場合があります。

もちろん、サーバー上でNode.jsを実行している場合もあります。その場合、JavaScriptタイミング関数をcronジョブであるかのように使用できます。

于 2012-09-14T23:46:23.820 に答える
1

つまり、cronを使用します

別の回答へのコメントで、あなたは次のように述べました。

毎週1回php関数を実行したい

この場合、1つの主要なオプション(* nixを使用していると仮定)があり、それはcronです(Windowsの代替手段が何であるかはわかりません)。Cronはこの機能のために特別に設計されており、使用するかどうかに関係なく、サーバー上で(他のシステム機能の場合)実行されている可能性が高いため、速度は問題になりません。

Node.jsを使用しないでください

Node.jsは、PHPの代替サーバーサイドテクノロジーです。phpの代わりにサーバー側で使用します。すでにPHPを使用している場合は、それを忘れてください。Node.jsが言及されている唯一の理由は、JavaScriptについて質問したためです。

また、毎週のタイミングイベントの場合、JavaScriptタイマーはお勧めできません。setTimeout()関数はミリ秒単位で機能し、数秒と数分(場合によっては数時間)で機能しますが、数週間では機能しません。

サーバーサイドJavaScript(Node.jsなど)を使用する場合は、おそらく以下のPHPAlternativeと同様のことを行う必要があります。

PHPの代替

もちろん、ホスティング環境(特に安価な環境)によっては、cronが利用できない場合があります。この場合、別の戦略を考え出す必要があり、おそらくPHPを使用するのが最善でしょう。私が以前に行ったことを見たことが、これらの線に沿っています。

  1. 実行する必要のあるジョブの登録をいくつか用意します。(データベース、ファイル、その他)
  2. メインのPHPスクリプト(通常はindex.php)を実行するたびに、レジスターをチェックして、未処理のジョブがあるかどうかを確認してください。2.a. ジョブを実行します。2.b. レジスターを更新して、ジョブが最後に実行された時刻を思い出せるようにします。

長所:

  1. cronにアクセスできない場合に機能します。

短所:

  1. スクリプトがあまり頻繁に実行されない場合(この方法はページにアクセスするユーザーに依存しているため)、ジョブは必要な頻度で実行されない可能性があります。
  2. スクリプト頻繁に実行されると、スクリプトに不要なオーバーヘッドが発生します。
  3. ジョブの実行に時間がかかる場合は、ページの読み込み時間に影響します。
  4. 基本的にcronを複製していますが、cronを使用するよりもはるかに効率の悪いPHPを使用しています。
  5. (多くの時間を投資しない限り)cronと同じくらい優れたソリューションを開発することはまずありません。
于 2012-09-15T01:43:57.000 に答える
0

javascriptタイミングイベントを実行するには、Webページを開く必要があります。つまり、そのページを公開する必要があります。あなたはそれをしたくありません。cronジョブは簡単で効果的です。私は彼らが好き。あなたはそれをすべきです。

于 2012-09-14T23:43:37.800 に答える