私はキューシステムの実装の難しさを見つけようとしています。私は基本的なキューを実装する方法を知っているので、バックグラウンドで私が何をしているのか少し説明します:キューアクセス同時実行ソリューションとは何ですか?
私は、メッセージが配置されるキューを実装します。メッセージは、ユーザーが定義した時間に掲示されるように予定されています(複数の出現は分の精度で許可されますが、UIの観点からは「毎分または毎時間」の出現が制限されますが、この)。
ここに私の質問が出てくるところです: 最終的に私は現時点で多くのメッセージを掲示する必要がある状況にあるかもしれません。スクリプト)を実行して、[x、10,25]個のメッセージを一度にキューから取り出して処理します。問題は、各インスタンスが一意のメッセージを処理するように(これはすでに別のインスタンスによって処理されているものを処理することなく)行う方法です。私は現在の接続、レコードをロックする方法、そして私が考えていないかもしれない何かを心配しています。
私が使用するテクノロジは、PHPとMySQLです。私は上記のいくつかの解決策を探しています、私は自分の検索で使用すべき用語、現実世界の例、考え、コメント、アイデアを探していますか?
ありがとうございました!私が出会った
一つの解決策は、アマゾンシンプルなキューサービスを使用していた...それはユニークなメッセージ処理/まあ、私はこのようにそれを行うだろうhttp://aws.amazon.com/sqs/
私は正しいことを理解しています:MySQLは各アップデートを受け取った順に処理する必要があります。また、同時に2つのアップデートが受信された場合、MySQLは内部的にそれを処理する必要があります。このリンク? – farinspace
MySQLのドキュメントでInnoDBについてのセクションを見てください。取引に関する部分に注意を払う。 しかし、私はこれがトランザクションサポートを持たないMyISAMの下でも機能するかもしれないと思います。 2つのUPDATE文を同時に実行できる場合でも、同じ行に同時にアクセスできないようにする必要があります。もしそうなら、これは大きな混乱を招くでしょう。しかし、それができなければ、あなたはすでに安全です。 UDPATEがどの行に影響を与えるのかを正確に予測することはできませんが、2つのUPDATEが競合することはないことがわかります。 –
このデータベースパターンでは、たくさんのキューのメッセージをポーリングすると思いますか? – Alfred