私はCakePHPにXML-RPC APIとWebフロントエンドを介してアップロードされたファイルを処理しています。 ClamAVでファイルをスキャンする必要があり、サムネイルを生成する必要があります。すべてのリソースを消費する作業は、ユーザーが待つ必要がない時間がかかります。ですから、私は一般的にPHPと特にCakePHPで非同期処理を検討しています。PHP(CakePHP)の非同期処理またはメッセージキュー
私は有望に見えるCakePHPのMultiTask pluginを見つけました。私はまた、droprとbeanstalkdのようなさまざまなメッセージキューの実装に出くわしました。もちろん、何らかの種類のケーキシェルを使って実装された、何らかのバックグラウンドプロセスも必要です。私はPHP_Forkを使ってマルチスレッドを見て、マルチスレッドのPHPデーモンを実装しました。
私はこれらすべての作品を最良の方法で一緒に収める方法についていくつかアドバイスが必要です。
- 長時間実行するデーモンをPHPで記述することをお勧めしますか?私は何のために気を付けるべきですか?
- 外部メッセージキューの実装の利点は何ですか? MultiTaskプラグインは外部メッセージキューを使用しません。タスクを格納するためにMySQLテーブルを使用して独自のロールを作成します。
- どのメッセージキューを使用する必要がありますか?落ちる?ビーンストーク?他に何か?
- バックエンドプロセッサはどのように実装する必要がありますか?フォークPHPデーモンは良いアイデアか、単にトラブルを求めていますか?
私の現在の計画は、MultiTaskプラグインを使用するか、独自のMySQLテーブル実装ではなく、beanstaldを使用するように編集することです。キュー内のジョブは、単純にタスク名と一連のパラメータで構成されます。 PHPデーモンは、着信ジョブを監視し、それらを子スレッドの1つに渡します。単に与えられたパラメータでCakePHPタスクを実行します。
これに関する意見、アドバイス、コメント、試合錯誤、または炎はありますか?
また、いくつかの情報があります。 @ [queue-deferred-execution-in-cakephp /](http://www.dereuromark.de/2013/12/22/queue-deferred-execution-in-cakephp/)を処理しています。 – mark