私のウェブサイトにリンクされたMySqlデータベースがあり、タスクリストのテーブルがあります(列は以下の「/」で区切られています)。
task1 / doTask1.sh / todo
task2 / doTask2.sh / 完了
task3 / doTask3.sh / todo
task4 / doTask4.sh / todo
等...
私のウェブサイトへのすべてのリクエストで、「todo」タスクが実行され、サーバーによって「完了」としてマークされるようにします。タスクは 1 回だけ実行できます。しかし、ここで問題が発生します。
仮に:
ユーザー A は、「todo」としてマークされたタスクを選択します。doTask1.sh が実行され、ユーザー A からの要求によってトリガーされ、完了としてマークされます。ユーザー B は、「todo」としてマークされたタスクを選択します (タスク 1 が完了したため、タスク 3 とタスク 3 のみ)。doTask3.sh が実行され、ユーザー A からの要求によってトリガーされ、完了としてマークされます。ユーザー B からの要求によってトリガーされ、doTask3.sh が再度実行されます。doTask4.sh についても同様です。
これは、同時 DB 接続により、PHP/Nginx/MySql を使用して発生する可能性がありますか? はいの場合、どうすればこの問題を回避/回避できますか?
この例では、状況を単純化するために doTaskx.sh を使用しました。実際には、この列にはタスクの説明が含まれており、私の Web サイトを強化する PHP スクリプトは、その説明に応じてタスクを実行します。