0

私は現在Symfony2フレームワークでウェブサイトを開発しており、5分ごとに実行されるコマンドを作成しました。このコマンドは大量のRSSニュースフィードを読み取り、そこから新しいアイテムを取得してデータベースに配置する必要があります。

現在、コマンドの実行には約45秒かかります。また、この45秒間は、すでに多くの最適化を行っていますが、CPUの約50%から最大90%もかかります。

だから私の質問は、同じコマンドを他の何か、たとえばpythonで書き直すのは良い考えですか?RSS / AtomライブラリはPythonで利用できますか?PHPで利用できるライブラリよりも高速で最適化されていますか?

よろしくお願いします、Jaap

4

3 に答える 3

2

libxmlCiibraryの基礎となるユーザーがlxmlを使用して生のXMLを解析できます。

http://lxml.de/parsing.html

解析はネイティブコードを使用して行われるため、高速です。

誰かがすでにやっています:

lxmlでRSSを解析中にエンコードエラーが発生しました

一方、ボトルネックがXML解析ではなく、データのダウンロードと並べ替えである場合、ボトルネックは別の場所にあります。

于 2012-07-08T09:47:44.783 に答える
0

フィードを解析する前に、まずフィードのキャッシュヘッダーを確認してみてください。
このようにして、おそらく多くのフィードでの高価な解析操作を節約できます。

last_updatedの日付をソースのデータベースに保存してから、キャッシュヘッダーの可能性を確認します。いくつかありますので、何が最も適しているか、最も多く提供されているかを確認するか、すべてに対して確認してください。
ヘッダーは次のようになります。

  • 有効期限
  • 最終更新日
  • キャッシュ制御
  • プラグマ
  • ETag

ただし、注意してください。フィードソースを信頼する必要があります。
すべてのフィードがそのようなヘッダーを提供したり、正しく提供したりするわけではありません。
しかし、私はそれらの多くがそうすると確信しています。

于 2012-07-09T10:17:20.263 に答える
0

これは、フィードの各反復の最後にusleep()関数を追加することで解決されます。これにより、CPUとメモリの消費量が大幅に削減されました。このプロセスは、以前は約20分かかりましたが、現在は約5分しかかかりません。

于 2013-03-12T12:44:26.697 に答える