13

beanstalkd [ http://kr.github.com/beanstalkd/ ] を使用することをお勧めしますか?

PHPでの非同期処理?

このライブラリを使用したことがある人からのフィードバック/コメントの賛否両論が必要です。

ありがとう、

4

1 に答える 1

15

私は実稼働環境で Beanstalk を使用しており、テスト中に何百万もの単純なメッセージを投げましたが、一般的には大量でしたが、実稼働システムでは、私が会社を辞めるまでに 100,000 を超えるタスクが処理されていました。それはまだ実行されている可能性があり、その場合、私が計画したように、さらに使用を拡大していれば、今では数千万、またはそれ以上になるでしょう.

良い点が多いのでオススメです。

  • 名前付きチューブを使用して、配信されるジョブを制限できます。マシンのホスト名に基づいてチューブを監視します。これにより、ワーカーが実行される場所が制限されます。特定のサーバーにのみ保存されるアップロードされたファイルに役立ちます)。
  • 遅延は、将来のイベントを設定するために使用できます
  • サーバーの最新バージョンは bin-logging もサポートしているため、持続性がありますが、クラッシュしたことはありません。

私が最初に行ったタスクは画像処理でした。Apache/mod_php プロセスの外でその作業を行うことで、サーバーに影響を与えずに (Web サーバーを吹き飛ばして) 大きな画像のサイズを変更することができました。負荷の軽いキューでは、アップロード後にページが更新される前にサムネイルが作成されていました。

非同期で処理できるタスクは他にもたくさんあります。

私がこれまでに経験した唯一の問題は、ワーカーが問題なく完了したことを確認すること、またはジョブが「埋められる」ようにエラーをキャッチして、ジョブがキューに戻されて再度実行されないようにすることでした(そしてワーカーを再びクラッシュさせます)。

PHP は長時間実行されるプロセスにはあまり適していないため、ワーカーを再起動してメモリをクリアすることも役立ちます。

于 2009-10-23T22:23:25.193 に答える