基本的に、次の 2 つの選択肢があります。
選択肢 1 では、必要なデータがすべて揃っているかどうかをスクリプトごとにチェックし、すべての作業を実行して次の移動 (またはその他) を計算します。並行性の問題が発生するため、これを正しく行うのは思ったよりも実際にははるかに困難です。
基本的に、そのアプローチは複数の「プロセス」(ページの読み込み)につながり、同じデータに対して同じ作業を実行しようとします。これにより、作業をまったく行わない、または行う場所での競争への扉が開かれます。それを2回。
難しそうに聞こえる選択肢 2 では、別の PHP スクリプトを作成して、すべての動きがあるかどうかを確認し、結果を計算し、バックグラウンドでデータベース (またはその他のもの) を更新します。
次に、それを cron ジョブなどから実行して、一度に 1 つのインスタンスしか実行しないようにします。これにより、作業が楽になります。「すべて完了」スクリプトは 1 回だけ実行されるため、競合について心配する必要はありません。
このアプローチは実際には長期的にはより簡単です。なぜなら、より多くのコードとより多くの可動部分が含まれますが、実際にはいくつかのより簡単な問題 (cron を使用して少し多くのコード) と引き換えに難しい問題 (並行性) を回避できるからです。
もちろん、これらの両方を改善することはできますが、これらは基本的なモデルです。ロックやその他の調整手法を使用すると、「最後のページで計算」をより適切に機能させることができますが、競合に対処する必要があります。
さまざまな「バックグラウンド ジョブ」ツールを使用すると、タイマーではなく即座にチェックをトリガーできるため、2 番目のアプローチのレイテンシを改善できます。多少の遅延はまだありますが、ユーザーにはそれほど多くは見えません。
ただし、実際には、これら 2 つの戦略のいずれかを選択して、それに従うことができます。
(また、可能であれば、他の誰かがこれらの問題を既に解決しているフレームワークまたは何かを入手して、それを使用することを強くお勧めします。)