1. キューを使用して注文が 15 分を超えているかどうかを検出したいのですが、15 分を超えている場合はタイムアウトキャンセルするようにデータベースを変更しますが、開始方法がわかりません。
この機能は、ユーザーの行動をトリガーするために作成できます。たとえば、ユーザーが注文を確認し、支払いが行われておらず、15 分を超えていると判断した場合、注文ステータスがタイムアウトキャンセルに変更されます。表示されておらず、ステータスも更新されていない注文は、スケジュールされたタスクによって早朝に更新される可能性があります。注文量が多い場合、すべての注文のステータスをリアルタイムで同期することはお勧めできませんし、意味がありません。
データベースポーリング: スケジュールされたタスクを使用してデータベースをポーリングし、関連する注文処理をクエリします。この方法は、小規模なプロジェクトでシンプルで実用的であり、保守が簡単です。
リングキュー: 参照: http://mp.weixin.qq.com/s/mvF...
キューサービス: 遅延キュー処理を使用する 参考: http://tech.youzan.com/queuin...
より良い解決策は、前述のリング キューであるタイム ホイールを使用することです。 有効期限を 15 分に設定し、キーの削除イベントをリッスンし、対応する操作を実行することもできます。
タイマーを使うといいんじゃないですか?
Redisは必要ありません
MySQLで実現可能です
計画: PHPスクリプトを作成し、デーモンプロセスを実行し、whileループを実行し、ライブラリを確認します。注文に15分以上かかり、注文が未払いで未発送の場合、キャンセル操作が実行されます
この機能は、ユーザーの行動をトリガーするために作成できます。たとえば、ユーザーが注文を確認し、支払いが行われておらず、15 分を超えていると判断した場合、注文ステータスがタイムアウトキャンセルに変更されます。表示されておらず、ステータスも更新されていない注文は、スケジュールされたタスクによって早朝に更新される可能性があります。注文量が多い場合、すべての注文のステータスをリアルタイムで同期することはお勧めできませんし、意味がありません。
データベースポーリング: スケジュールされたタスクを使用してデータベースをポーリングし、関連する注文処理をクエリします。この方法は、小規模なプロジェクトでシンプルで実用的であり、保守が簡単です。
リングキュー: 参照: http://mp.weixin.qq.com/s/mvF...
キューサービス: 遅延キュー処理を使用する 参考: http://tech.youzan.com/queuin...
より良い解決策は、前述のリング キューであるタイム ホイールを使用することです。
有効期限を 15 分に設定し、キーの削除イベントをリッスンし、対応する操作を実行することもできます。
タイマーを使うといいんじゃないですか?
Redisは必要ありません
MySQLで実現可能です
計画:
PHPスクリプトを作成し、デーモンプロセスを実行し、
whileループを実行し、ライブラリを確認します。注文に15分以上かかり、注文が未払いで未発送の場合、キャンセル操作が実行されます