我要做一个自动退款功能?比如说他付款后三天内容没有人回复他,就自动进入退款流程!但是如何写这个定时任务呢?是每隔一秒钟就去运行PHP脚本还是在mysql内写定时任务?
某草草2017-05-16 13:05:45
いくつかのオプションがあり、それぞれに長所と短所があります。どれがより適しているかを確認してください:
関連するテーブルでは、注文時間フィールドと有効期限フィールドを設定する必要があります。
最初のタイプ: crontab スケジュールされたタスク。PHP スクリプトを実行してテーブルをスキャンし、有効期限から注文時間を引いた時間が 3 日を超える場合、返金ステータスに変更されます。
2 番目の方法: mysql のスケジュールされたタスクを使用する。以下はデモです。独自のロジックを作成できます。
リーリー3 番目の方法: Redis を使用して保存し、保存時の有効期限を 3 日に設定します。
最初のオプション
長所: シンプル、コードロジックはあまり変更せず、書いたらすぐに使用できます
短所: crontabタスクを一定時間に実行する必要があるため、適時性があまり良くありません
2番目のオプション
長所: Mysql を直接実行するだけで済み、他のリンクは必要ありません
欠点: crontab の利点と似ており、mysql のスケジュールされたタスクに慣れていない場合でも、慣れる必要があります
3 番目のオプション
利点: 使いやすい、注文の適時性が高く、一度 mysql にアクセスする必要はありません io
短所: ロジック層のコードに Redis ロジックを追加する必要がある場合があり、永続化戦略、HA、およびマスター/スレーブを適切に実行する必要があり、そうしないとダウンタイムが発生します。悲劇的なことになるだろう。
phpcn_u15822017-05-16 13:05:45
メッセージキューを遅らせることで、注文後にメッセージキューの書き込みタスクを登録し、3日後にトリガーして、返金操作を実行するかどうかを単純に判断するインターフェイスを作成します