0

時間のかかるもののいくつかをキューに抽出したいと思います。このため、Gearmanが最もよく使われていることがわかりましたが、それが私にとって正しいことかどうかはわかりません。私たちがやりたいタスクの1つは、メールの送信をキューに入れることであり、メールの送信を1分間キャンセルできる機能を提供したいと考えています。したがって、すぐには機能しないはずですが、今すぐ+1分で実行してください。そうすれば、その前にジョブをキャンセルでき、送信されることはありません。

これを行う方法はありますか?

これはdebianで実行されます。そして、phpから使用できるはずです。私がこれまでに見つけた唯一のことは、特定の日時にギアマンで仕事をスケジュールすることでしたが、それは広く普及していない何かで実行されます:(

4

1 に答える 1

0

あなたの質問には 2 つの部分があります: (1) 将来のスケジューリングと (2) その時までジョブをキャンセルできることです。

(1)atは、その質問で指定されているように問題なく動作するはずであり、その人はラッパー コードを投稿しました。試してみましたか?

それを使用したくない場合は、次のシナリオを検討してください。

  • 送信する電子メールの電子メール レコードをデータベースに挿入します。これには、1 分後に設定する「timeSent」列が含まれます。
  • 1 人のギアマン ワーカー (1 人の理由を説明します) が送信されていないメール (たとえば、一部のstatus列 = 0)のデータベースを調べ、timeSent既に通過した場所を確認し、それらを送信します。

したがって、(2) については、送信前にメールをキャンセルしたい場合は、そのstatus列を別のものに更新するだけです。

ギアマン ワーカーは 1 人である必要があります。複数あると、同じメール レコードを取得して送信しようとする可能性があるためです。複数が必要な場合は、最初にメール レコードを取得するレコードが、実際にメールを送信するなどの時間のかかる操作 (たとえば、そのstatus列を別のものに更新するなど) の直前にロックするようにしてください。

于 2010-11-13T20:59:27.683 に答える