未払い注文の計画的削除の問題を解決するためのスリープ機能の使用についての議論
電子商取引 Web サイトが商品を購入して注文を生成した後、通常、支払いの適時性の問題が発生します
ユーザーが注文を行った後、注文が一定期間内に支払われない場合、注文はキャンセルされ、リリースされます 注文に使用されている商品の残りの数量
インターネット上で情報を収集した後、一般的に次の方法があります
1) Mysql 5.1 では、タイマーを作成できます
2) 「サーバー側でスケジュールされたタスクを作成する」で、注文の削除専用の php ページを作成します: php deleteExpiredOrders.php
3) ユーザーが注文を表示したら、注文状況
mysql のタイマーやスケジュールタスクの作成方法がよく分からないので、方法 1) と方法 2) を一時的にパス
方法 3) 商品の残り数量が占有されているため、注文をリリースできません pass
次に、ユーザーが生成された注文を確認している間に checkpay.php ページをカールできるかどうか疑問に思いました
In checkpay.php
sleep(2*3600);//支払い期限を 2 時間に設定します
if(order['status']==0){
/*******無効な注文を削除し、残りの商品数量を解放します******/
}
1.curl で設定できますタイムアウト、curl を呼び出すページはスリープ ページの実行結果を待つ必要はありません
2.checkpay.php にはページ出力コードはなく、単なる操作です。データベースのコードはオンラインで見つかりました。この場合、スリープ機能は多くのシステム リソースを占有しません。
ここで、無効な注文を定期的に処理するこの方法が実行可能かどうかを調べたいと思います。マスターが実行できることを願っています。修正してください
------解決策のアイデア----------------------
スリープがハングします 何秒ですか現在のプログラムの
ユーザーも Web サーバーも無駄に 2 時間待機することはありません
したがって、それは現実的ではありません
mysql5.1 以降にはタイマーがありますが、タイマーがない場合があります (使いたくない)実際の動作環境でのmysqlは5.1以上である可能性があります
オペレーティングシステムのスケジュールされたタスクを使用する場合、権限がない可能性があります
方法3については注文によって占有されている商品の残りの数量を解放できません。 もちろん、注文は削除できるので、占有されているスペースをリサイクルできます
最も可能性の高い方法は、残りの商品を表示する必要があるページを生成するときです。数量については、注文リサイクル プログラムを呼び出してください