php倒计时关闭订单,订单倒计时取消,nodejs 辅助实现倒计时任务
首先本地安裝node環(huán)境
由于小編是搞后臺開發(fā)的,前段框架略知一二,此處就不班門弄斧了,網上很多教程
http://nodejs.cn/
win和linux找才對應包
安裝完成之后創(chuàng)建node一個框架express,創(chuàng)建一個工程
地址 127.0.0.1:3000
此處demo 為?LateSend
然后再創(chuàng)建文件
LateSend/routes/latefire.js
倒計時取消訂單邏輯代碼:
var express = require('express');
var router = express.Router();
var request = require('request');
var moment = require('moment');
router.get('/', function(req, res) {
var taskname = req.query.taskname;
var objectid = req.query.objectid;
var time = req.query.time;
var start = Date.now();
var returnUrl = req.query.returnUrl;
console.log('當前時間:' + moment(start).format('YYYY-MM-DD HH:mm:ss')+"---taskname="+taskname+"----objectid="+objectid+"----time="+time);
var oneID = setTimeout(function () {
console.log(Date.now() - start + '毫秒后,'+ moment(start).format('YYYY-MM-DD HH:mm:ss')+'觸發(fā)動作!被修改訂單id:'+objectid+'\r\n');
request.post(returnUrl+taskname).form({order_id:objectid,time:time});
clearTimeout(oneID);
}, time*60*1000);
res.send("服務器將在"+time+"分 后觸發(fā)"+taskname+"操作");
});
module.exports = router;
實現邏輯:
1.后臺服務器,創(chuàng)建訂單的地方,調用127.0.0.1:3000,請求倒計時功能
$url='http://127.0.0.1:3000/latefire?taskname=cancelOrderLateCancel&objectid='.$order_id.'&time=30&returnUrl=127.0.0.1:80/home/order/lateCancelOrder';
此處把express項目用到的信息,作為參數傳遞過來,回調地址,任務名稱,訂單ID,倒計時時間
2.node服務啟動并持續(xù)運行,使用npm 安裝插件forever,可一直運行該服務,否則,node退出窗口,服務停止
3.node服務運行,設置time=30之后,自動回調項目取消訂單的功能邏輯
地址為127.0.0.1:80/home/order/lateCancelOrder
lateCancelOrder這個方法中,實現取消訂單的基本邏輯
另外訂單倒計時還有一更搓的方法,小編之前自己用的,也分享下吧
在訂單下成功頁面,js定時器,倒計時30分鐘,發(fā)送取消請求的命令,缺點,用戶會關掉瀏覽器,定時器,不能運行
這時候,做了各種補救錯誤,比如請求付款的接口處,先判斷時間是否到時間,倒計時30分鐘,到了,直接返回訂單已過期
輔助linux crontab定時任務,每天晚上12點檢查所有漏網之魚,所有為取消的訂單,系統(tǒng)取消掉
總結
以上是生活随笔為你收集整理的php倒计时关闭订单,订单倒计时取消,nodejs 辅助实现倒计时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用outputstream写到指定位置
- 下一篇: python 抓网卡数据包_Python