私はしばらくの間、PHPアプリケーションを開発しています。 (基本的な)考え方は次の通りです。ユーザーはブロックを使用してWebページを構築できます。これらのブロックには、イメージ、テキストなどを含めることができます。これらのブロックのそれぞれには、独自のオプションがあります。これらのブロックは、PHPによるドメイン駆動型設計で定義されています。PHP:最善の方法を前方に[シリアル化、オブジェクト、Redis]
私は、jQuery/Javascriptフロントからのリクエストを処理するPHPベースのコントローラを使用するようにアプリケーションを構築しました。ユーザがオプションを編集するたびに、このコントローラに送信され、Redisおよび/またはphp-sessionからブロックのコレクション(php-objects)をシリアル化し、編集または追加/削除するブロックの属性を設定します。ブロック。これは、ドメインロジックを強化するためです。
私は自分自身のために発展するだろうが、それはうまくいた。私は決して競争条件などを心に留めていませんでした。製品を進めていくうちに、人々はデータを失うことに気付きました。私は何が起こるか説明します。
- ユーザーは要求が
- コレクションをunserialisesと
- が自分のUUID
- に基づいてブロックを設定し、コントローラに行われる
- 保存ブロックのオプション
- プレスを編集ブロックをコレクションに戻し、
- はコレクションを再度シリアライズします。
2つの同時リクエストが作成され、両方のリクエストのうち1つの編集を上書きするシナリオがあります。
私はアプリケーションのこの部分を書き直す必要があることを知っています。問題は最良のアプローチは何か。私はできた;
- アプリケーションの全体を書き直す必要があるため、多くの作業が必要になるjavascriptライブラリを実装します。また、私はjavascriptベースのソリューションを実装する経験がたくさんありません。しかし、私は新しいものに足を踏み入れることはできません。私はjavascriptによるテストを行い、今後の問題の発生を防ぎ、クロスブラウザテストを有効にしたいと考えています。
- コントローラが単一のリクエストを処理し、同時リクエストが前のリクエストのデータセットを上書きしないようにするには、これにより、同時要求およびデータ損失の可能性は低くなりますが、完全には低下しません。本当に遅いインターネット接続を持つ人は、同時に多くの同時リクエストを生成する可能性がある場合、接続が失われる可能性があります。
私が逃している可能性がある他のアプローチや、上記の2つのうちのいずれかで十分でしょうか。
多くの良い質問は、専門家の経験に基づいてある程度の意見を生成しますが、この質問に対する回答は、事実、参考文献、または特定の専門知識ではなく、概ね意見に基づいている傾向があります。一般的な問題を解決するための開発フォーラム(おそらく[quora](http://www.quora.com/Computer-Programming)?)を探したいかもしれません。次に、特定のコーディング上の問題がある場合は、StackOverflowに戻ってください。お手伝いします。 –