私は小さなクリニックのためにキュー管理システムを書いています。複数のユーザーが同じことをしようとしているので、これらは並行性の問題です。私はACID保証に精通しており、トランザクションの概念も理解しています。2人が同時に同じデータを変更することはできないことを私は知っています。
しかし、ここに私の問題があります:私は特定の医者がその時間のために自由であるかどうかを決定するPHP
機能を持っています。isFree($time)
両方のユーザーが同じ関数を呼び出そうとすると、両方が肯定的な結果を取得して混乱する可能性があるので、どういうわけか、同時ユーザーをキューに入れるか、1つだけを受け入れる必要があります。
この問題を解決する最も簡単な方法は、関数を一度に1つずつ呼び出すことができるように制限することです。おそらく何らかのフラグまたはブロッキングシステムが必要ですが、それを行う方法について正確な考えはありません。
または、その一方で、重複する可能性のある関数呼び出しのみを制限する方がさらに高速です。たとえばisFree($time)
、月曜日と火曜日の関数を同時に呼び出しても問題は発生しません。