電子商取引ウェブサイトが商品を購入して注文を生成した後、通常、支払いの適時性の問題が発生します。
ユーザーが注文を行った後、一定期間内に注文が支払われない場合、注文はキャンセルされ、注文に占有されている商品の残量が解放されます
ネットで情報を収集しましたが、一般的に次の方法があります
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にはページ出力コードはなく、インターネットで見つけたデータベースを操作するためのコードです。この場合、スリープ機能は多くのシステム リソースを占有しないので、この方法で無効な注文を処理できるかどうかを調べてみましょう。これをマスターできることを願っています。あなたは私を修正します
ディスカッションに返信(解決策)
したがって、それは実現不可能です
mysql5.1 には上記のタイマーがありますが、それを使用しない (したくない) 可能性があり、実際のオペレーティング環境の mysql は 5.1 未満ではない可能性があります
オペレーティング システムのスケジュールされたタスクを使用する場合は、許可がありません
方法 3 については、「解放できない」「注文に占有されている商品の残り数量」は当然のことですが、注文は削除できるため、占有数量はリサイクルできます
最も可能性の高い方法は次のとおりです。残りの数量を表示する必要があるページを生成するときに、注文リサイクル プログラムを呼び出してください
モデレーターが丁寧に説明してくれてありがとう、モデレーターが言ったように、最良の解決策は、残りの数量を表示する必要があるページで残りの商品をリサイクルすることです。表示されますよ〜