3

現在、RSSリーダー/フェッチャーの書き込みを試しています。1つを除いてすべてが順調に進んでいます。ひどく遅いです。

説明させてください:

  1. データベースからRSSフィードのリストを取得します
  2. このリストからすべてのフィードを繰り返し、cURLで開き、SimpleXMLElementで解析します
  3. 特定のキーワードを使用してこれらのフィードの説明とタイトルをチェックし、データベースに既に存在するかどうかを確認します。
  4. そうでない場合は、データベースに追加します。

今のところ、私は11のフィードをループしています。これにより、ページの読み込み時間は18秒になります。これはデータベースを更新せずに行われます。新しい記事が見つかった場合、最大22秒かかります(ローカルホスト上)。

ライブWebサーバーでは、これはさらに遅くなり、phpが設定されている制限を超える可能性があると思います。

だから私の質問は、速度を向上させるためのあなたの提案は何ですか..これが不可能な場合、これを複数の実行に分割するための最良の方法は何ですか?たとえば、一度に2つのフィードを使用しますか?すべて自動化したいので、2回のフィードごとにクリックしたくありません。

皆さんが私に良い提案をしてくれることを願っています!

コード例が必要な場合は、私に知らせて、いくつかを貼り付けてください

ありがとう!

4

2 に答える 2

0

phpスクリプトを実行することにより、フィードをデータベースと自動的に同期するcronjobまたはデーモンを使用することをお勧めします。これにより、ユーザーの観点から遅延がなくなります。毎時またはあなたに合ったもののようにそれを実行します。

最初に、プロセスのどの部分が実際に遅いかを理解する必要があります。コードがなければ、何が間違っているのかを判断するのは困難です。

考えられる問題は次のとおりです。

  • (フィードを保存する)リモートサーバーは低速です
  • ローカルサーバーのインターネット接続
  • サーバーのハードウェア
  • そして明らかにコード
于 2012-11-26T12:20:42.290 に答える
0

ここにいくつかの提案があります。

  • まず、データのフェッチとクランチを、ユーザーへのWebページの表示から分離します。これを行うには、CRONジョブで実行されるスクリプト、またはデーモンとして存在する(つまり、継続的に実行される)スクリプトを設定することにより、フェッチとクランチの部分を配置します。
  • 次に、フィードフェッチの間に適切な時間制限を設定して、スクリプトが毎回すべてのフィードをループする必要がないようにすることができます。
  • 第3に、SimpleXMLではなく、MagpieRSSなどのフィード解析ライブラリの使用を検討する必要があります。
于 2012-11-26T12:31:59.097 に答える