ホームページ  >  記事  >  バックエンド開発  >  未払い注文の計画的削除を解決するためのスリープ機能の使用に関するディスカッション

未払い注文の計画的削除を解決するためのスリープ機能の使用に関するディスカッション

WBOY
WBOYオリジナル
2016-06-23 13:40:391545ブラウズ

電子商取引ウェブサイトが商品を購入して注文を生成した後、通常、支払いの適時性の問題が発生します。
ユーザーが注文を行った後、一定期間内に注文が支払われない場合、注文はキャンセルされ、注文に占有されている商品の残量が解放されます
ネットで情報を収集しましたが、一般的に次の方法があります
1) Mysql 5.1 以降ではタイマーを作成できます
2) 注文を削除するための専用の php ページを作成し、作成しますサーバー側のスケジュールされたタスク: phpremoveExpiredOrders.php
3) ユーザーが注文を表示したら、注文ステータスを更新します

mysql タイマーとスケジュールされたタスクの作成方法についてあまり知らないので、方法 1) と方法 2 ) は一時的にパスされます
方法 3) 注文に占有されている商品の残量は解放できないため、パスします

そこで考えたのですが、生成された注文をユーザーが確認している間に checkpay.php ページをカールすることは可能でしょうか
checkpay で.php
sleep(2*3600);//支払い期限を 2 時間に設定します
if(order['status']= =0){
/*******無効な注文を削除し、残りの商品数量を解放します******/
}

1.curlタイムアウトを設定でき、curlを呼び出すページはスリープページの実行結果を待つ必要がありません
2.checkpay.phpにはページ出力コードはなく、インターネットで見つけたデータベースを操作するためのコードです。この場合、スリープ機能は多くのシステム リソースを占有しないので、この方法で無効な注文を処理できるかどうかを調べてみましょう。これをマスターできることを願っています。あなたは私を修正します

ディスカッションに返信(解決策)

sleepは現在のプログラムを数秒間ハングアップするだけです

ユーザーもWebサーバーも無駄に2時間待つことはありません

したがって、それは実現不可能です

mysql5.1 には上記のタイマーがありますが、それを使用しない (したくない) 可能性があり、実際のオペレーティング環境の mysql は 5.1 未満ではない可能性があります
オペレーティング システムのスケジュールされたタスクを使用する場合は、許可がありません
方法 3 については、「解放できない」「注文に占有されている商品の残り数量」は当然のことですが、注文は削除できるため、占有数量はリサイクルできます

最も可能性の高い方法は次のとおりです。残りの数量を表示する必要があるページを生成するときに、注文リサイクル プログラムを呼び出してください


モデレーターが丁寧に説明してくれてありがとう、モデレーターが言ったように、最良の解決策は、残りの数量を表示する必要があるページで残りの商品をリサイクルすることです。表示されますよ〜

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