ホームページ  >  記事  >  バックエンド開発  >  n 時間のカウントダウン後に注文ステータスを変更するために、このロジックはどのように実装されていますか?

n 時間のカウントダウン後に注文ステータスを変更するために、このロジックはどのように実装されていますか?

WBOY
WBOYオリジナル
2016-07-06 13:51:44998ブラウズ

サーバー上にスケジュールされた実行プログラムを設定しますか?
それとも、このページにアクセスするたびに期限が切れた後に変更する必要がありますか?

返信内容:

サーバー上にスケジュールされた実行プログラムを設定しますか?
それとも、このページにアクセスするたびに期限が切れた後に変更する必要がありますか?

このような問題については、注文を作成するときに有効期限を記録する方が良いと思います。そうすれば、注文を読み取るときにタイムスタンプを判断するだけで済みます。期間の目的が達成されたかどうか、現在のステータスが継続して動作できるかどうかを確認する。スケジュールされたタスクなどは、PHP をどのように効率的に使用するかについては話しません。システムレベルではありますが、途中でプログラム異常が発生するリスクはそれほど深刻ではありません。また、注文量が多い場合、サーバーの負荷も非常に高くなります

あなたの論理によれば、やはりスケジュールされたスクリプトを使用する必要があります。そうしないと、アクセスするたびにスクリプトを変更することになり、効率が低くなります。

Linuxシステムのスケジュールされたタスクを使用できるため、ループする必要はありません

ブラウザ側で WebSocket を使用しない場合は、アクセス時に有効期限が切れるかどうかだけを処理できます
WebSocket を使用する場合は、cron を使用して正直に実行します~
特定のビジネス シナリオの要件によって異なります

15分以内に支払いがない場合に注文をキャンセルするのと同様の機能について話していますか?やったことがないので感想しか言えません。注文を生成するとき、PHP はシステム関数を呼び出して、15 分で実行されるタスクを作成します。タスク ステートメントは php -f checkOrderStatus.php -id 323003
checkOrderStatus.php など、システムを使用して動的に生成されます。このスケジュールされたタスクを削除する機能(1回限りのスケジュールされたタスクがある場合は、わざわざ行う必要はありません。実際にはLinuxを理解していないので、使用するときに情報を検索するだけです。)
@accyl が言及した負荷の問題については、この関数は Web サービスを使用しないため、注文がこれに対応できる場合、このファイルの実行は注文を作成するよりもはるかに低コストになるはずなので、あまり心配する必要はありません。問題ありません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。