3

私はかなり新しく、node.js(PHP開発者としてのバックグラウンド)を知り始めたばかりです。nodejs の例と nodejs Web サイトのビデオを見てきました。

現在、私は動画サイトを運営しており、バックグラウンドで多くのタスクを実行する必要があります。現在、これは php スクリプトを呼び出す cronjobs によって行われます。このアプローチの欠点は、前のプロセスがまだ機能しているときに他のプロセスが開始され、サーバーなどに高い負荷がかかることです。

サーバー上で実行する必要があるジョブは次のとおりです。

  • Web サイトからフィードを収集し、mysql データベースに挿入する
  • Web サイトからデータを取得する (スクレイピング) (要求に応じて)
  • レポート用のデータを生成します。これらは主に、実行する必要がある mysql クエリです。

今後行うべき課題

  • ビデオ ビューをログに記録します (ユーザーがビデオ ページにアクセスしたとき) (これは mysql にも記録されます)
  • 訪問者のログ全般
  • 検索した動画に基づいて広告を表示

ジョブをキューに入れたり、時間ごとにジョブをスケジュールしたり、常に実行したりできるように、URL を呼び出すことができるようにしたいと考えています。

node.js がたどるパスであるかどうかはわかりません。そのため、ここで質問しています。ノードでこれを行う利点は何ですか? ダウンサイト?

node.js のプロは何ですか?

返信ありがとうございます。

4

3 に答える 3

7

Node.js は伝統的に Web/ネットワーク タスク (Web サーバー、IRC チャット サーバーなど) に使用されますが、Node.js は完全に非同期の IO (そのつまり、すべての IO はメイン イベント ループの外で発生します)。たとえば、ノードは簡単に多くのソケットを開いたままにして、それぞれでデータを待機したり、ファイルとの間でデータを非常に効率的にストリーミングしたりできます。

ジョブ キューを探しているだけのように聞こえます。人気のあるものはResqueで、Ruby 用に作成されていますが、PHPNode.jsなどのバージョンがあります。PHP 専用に作成されたジョブ キューもあります。PHP に固執したい場合は、Google で「PHP ジョブ キュー」を検索してみてください。

Node.js を使用する利点の 1 つは、大量の IO を非常に簡単に処理できることです。もちろん、私は推測にすぎませんが、あなたの要件に基づいて、それは仕事のための良いツールになるかもしれません:

  • ウェブサイトからのデータ/フィードのスクレイピング - 主にネットワーク IO を待機
  • MySQL にデータを挿入 - ほとんどがネットワーク IO を待機
  • レポート - 繰り返しますが、Node は MySQL クエリは得意ですが、おそらくデータの分析は得意ではありません
  • URL を呼び出してジョブをスケジュールする - Node の組み込み HTTP 処理と優れたWeb ライブラリにより、これが簡単になります

したがって、これらのタスクのために Node.js を試してみることは十分に可能です。その場合は、Resque for Node またはKueのような別のジョブ システムを見てください。複雑なものが必要ない場合は、独自のものを構築することもそれほど難しくありません.Redisはこれに適したツールです.

Node.js を使用したくない理由がいくつかあります。JavaScript と、イベント化された継続渡しスタイルのプログラミングに慣れていない場合、Node.jsについては、同期的に考えるのをやめる必要があるため、少し学習曲線が必要になる可能性があります。さらに、データの分析など、IO 以外の重いタスクがプログラムに多数含まれている場合、Node は優れていません。これらの計算がメイン イベント ループをブロックし、Node が非同期 IO のコールバックなどを処理できなくなるからです。最後に、既に PHP や他の言語で多くのロジックを使用している場合は、選択した言語で解決策を見つけるのがより簡単かつ/または迅速になる可能性があります。

于 2012-05-26T19:19:26.203 に答える
2

私は上記の答えを二番目にします。ただし、必ずしもフルサービスのジョブ キューが必要なわけではありません。asyncなどのフロー制御モジュールを使用して、タスクをできるだけ速く並列または連続で実行したり、同時実行を制御したりできます。Node.js には、多くの強力なスクレイピング/解析ツールがあります。この投稿ではいくつか言及しています。最近トランペットのことを聞いたばかりです。おそらく数十のオプションがあります。Node.js のコアにはStreamモジュールがあり、Requestによって HTTP のやり取りが非常に簡単になります。時間指定タスクの場合、最も簡単な方法は基本的な setTimeout/setInterval です。または、cron で呼び出されるスクリプトとしてスクレーパーを作成することもできます。または、コアの EventEmitter モジュールを使用して、何らかのイベントでトリガーします。等...

于 2012-05-28T00:56:32.717 に答える
0

制御されていない量のノード js 並列ジョブにより、サーバーがダウンする可能性があります。プロセスを制御するか、より良い方法で各タスクのキューに入れる必要があります

このニーズに対応し、php を知っている場合は、ギアマンを使用して、必要に応じて、または小さな php スクリプトでジョブを追加することをお勧めします

于 2015-01-07T04:17:21.530 に答える