「to do」リストの最初の 50 項目を通過し、各項目でスクリプトを実行し、データベースで実行済みとしてマークする cron ジョブを数分ごとに実行しています。
これは、アイテムを完了としてマークするテーブルが何かによってロックされ、アイテムがマークされなくなるまではうまく機能していました。その後、cron が再び実行され、同じ 50 項目が処理されました。
これは、mysql のプロセス リストが大量になり、数分ごとに 50 ずつ大きくなるまで繰り返されました。
どうすればこの出来事を止めることができますか? 私の考えは次のとおりです。
- スクリプトにコードを追加して、再度実行する前に cron がまだ実行されているかどうかを確認します
- 新しい SELECT クエリを実行して次の 50 項目を取得する前に、mysql テーブルでロックされたテーブルを確認します。
どちらにも浮き沈みがあるようで、適切に実装する方法がわかりません。誰にもアドバイス/より良いアイデアはありますか?