3

Web アプリケーションを構築していますが、2 つのサーバーで実行できるアーキテクチャを使用する必要があります。アプリケーションは、他のサイトから定期的に情報をスクレイピングし、エンド ユーザーからの入力に応じてスクレイピングします。これを行うには、Php+curl を使用して情報をスクレイピングし、Php または python を使用して解析し、結果を MySQLDB に保存します。

次に、Python を使用してデータに対していくつかのアルゴリズムを実行します。これは、定期的に、またエンド ユーザーからの入力時に行われます。結果の一部を MySQL DB にキャッシュし、ユーザー固有のものである場合は、データの保存をスキップしてユーザーに提供します。

別のサーバーで Web サイトのフロント エンドに Php を使用し、別のサーバーで Php スパイダー、MySQL DB、および python を実行することを考えています。

この種の仕事にはどのフレームワークを使用すればよいですか? MVCとCakephpは良い解決策ですか? その場合、それを使用して Python コードを制御および監視できますか?

ありがとう

4

2 に答える 2

2

これを実装するにはどうすればよいですか?

ここで答えるには大きすぎる質問です。確かに、追加の複雑さに加えて、スクレイピング用に 2 セットのコード (スケジュール用に 1 つ、デマンド用に 1 つ) は必要ありません。スレッド内で完了するのに無期限にかかるジョブを実行したくはありません。 Web サーバーへのリクエストによって生成されます - スクレイプに対するユーザー リクエストは、スケジューリング メカニズムを介して実行され、ユーザーに報告される必要があります (ただし、必要に応じて、Ajax ポーリングを使用して、同じスレッドで発生しているように見せることができます)。

どのフレームワークを使用すればよいですか?

フレームワークは特効薬ではありません。また、主に作成しているアプリケーションの性質に基づいてフレームワークを選択するべきではありません。確かに、特定の重要な機能が特定のフレームワークによって排除されている場合は、間違ったフレームワークを使用していますが、私の経験ではそうではありませんでした.コードを自分で書く必要があります.

cron ジョブよりも複雑なものを使用する

はい、多くの理由から、cron ジョブはおそらく適切な方法ではありません。私だったら、スクレイピングをスケジュールする (そして Web ページ スクリプトからの接続を受け入れて、追加のスクレイピングをキューに入れる) デーモンの作成を検討します。しかし、私はスクレイプを別のプロセスとして実行します。

MVC はこれに適したアーキテクチャですか? (私はMVC、アーキテクチャなどに不慣れです。)

いいえ。パターンがアプリケーションに適合するかどうかを考えることから始めないでください。パターンは教えるための便利なツールですが、どのコードがどのようなコードになるかを説明するものではありません。

(アプリケーションにはいくつかの MVC パターンが含まれる場合がありますが、他の多くのパターンも含まれている必要があります)。

C.

于 2010-06-11T11:43:36.097 に答える
1

レイヤーを整理する方法については、すでに明確なアイデアがあると思います。

まず、フロントエンドにWebフレームワークが必要です。
ここには多くの選択肢があります。Cakephpafaikは良い選択であり、デザインパターンMVCに従うように強制するように設計されています。
次に、ユーザーがスパイダーしたいものを格納するようにデータベースを設計する必要があります。
あなたのdbは、ユーザーのリクエストを保存するためにWebアプリケーションによってアクセスされ、何をスクレイプするかを知るためのphpスクリプトによって、そして最後に、リクエストされたデータが利用可能であることをユーザーに確認するためのpythonバッチによってアクセスされます。

考えられる過度に単純化されたシナリオ:

  1. ユーザーはあなたのサイトに登録します
  2. ウィキペディアからランダムなページを取得するためのユーザーコマンド
  3. リクエストはCakePhpアプリケーションを介してdbに保存されます
  4. Cron phpバッチが開始され、dbで新しいリクエストがないかチェックされます
  5. バッチはウィキペディアから新しいリクエストとスクレイプを見つけました
  6. スクレイプフラグでdbをバッチ更新します
  7. cron pythonバッチが開始し、dbで新しいスクレイプフラグをチェックします
  8. バッチは新しいスクレイプフラグを見つけ、ウィキペディアを解析していくつかのタグを抽出します
  9. 完了フラグを使用してデータベースをバッチ更新します
  10. ユーザーは自分のプロファイルで要求された情報を見つけました。
于 2010-06-11T10:48:35.553 に答える