2 つの異なるファイルにアクセスする 2 つの異なる AJAX 関数を使用すると、同時実行の問題が発生します。
データベースを使用して次のタスクを実行できません。これらのファイルのみを使用して実行する必要があります
問題
AとBの2 つのファイルがあります。
// A content :
1 2 3 4
// B content :
5 6 7 8
2 つの AJAX 呼び出しがfunc_a
あり、func_b
func_a
AからBに最後の値を追加し、BからAに最後の値を追加します
// Result after func_a
A : 1 2 3 4 8
B : 5 6 7 8 4
func_b
BからAに最後の値を追加し、AからBに最後の値を追加します
並行性について考えましたが、いずれにしても問題が発生します。まず、次のファイルを開く前に各ファイルを読み取って閉じ、func_a
+func_b
を同時に使用すると、次の結果が得られます。
A : 1 2 3 4 8 8
B : 5 6 7 8 4 4
しかし、望ましい結果は次のようになります。
A : 1 2 3 4 8 4
B : 5 6 7 8 4 8
さらに、プロセス全体でファイルを開いたままにできないか、デッドロックが発生する可能性があると思います。
func_a open A;
func_b open B;
func_a can't open B, waits forever;
func_b can't open A, waits forever;
PhP Mutex は、2 つの AJAX 呼び出し間で機能しなかったため、私が探しているものではないと確信しています。また、「申し訳ありませんが、ファイル B を開けませんでした」を返すことはオプションではなく、最初の試行で機能する必要があるとしましょう。
これまでに考えたすべてのソリューションは機能しません。
一時ファイルを使用してmutex.lock
、リソースが使用されているかどうかを確認すると、同じ問題が発生します。
Apacheが現在実行されているかどうかを確認する方法があるfunc_a
ので、func_b
待っていますか?(その場合、リソースの枯渇はあり得ません)
私は同時並行性数学にあまり慣れておらず、インターネットで見つけたものはすべてデータベースやミューテックスに関連していました。
私が考えていなかった簡単な方法があるかもしれません。
ありがとう。