次のジョブを実行する cron ジョブ (PHP スクリプト) を設定しました。
1. Read all of the unseen emails, using imap
1.1 For each email readed
1.2. Fetches the details and save detail in database
1.3. Moves email to other mailbox named "Processed"
1.4. Goto step 1.1
しかし、ステップ 1.2 の後、ステップ 1.3 の前にPHP スクリプトが停止または実行に失敗した場合、メールは再処理されます。これが問題です。
ご存知のように、処理時間はサーバーの負荷や処理するメールの数などの多くの要因に依存するため、max_execution_time の設定が役立つとは思いません。
これをアトミックにするにはどうすればよいですか?何か案は?(別のプロセス フローについてのアイデアがあれば、プロセス フローも変更できます)。
編集:電子メールが移動し、コミットしようとしていたが、PHP スクリプトが停止したとします。その場合、レコードが保存されずに電子メールが移動します。