搜尋

首頁  >  問答  >  主體

javascript - php 如何做自動退款功能?

我要做一個自動退款功能?比如說他付款後三天內容沒有人回覆他,就自動進入退款流程!但是要如何寫這個定時任務呢?是每隔一秒鐘就去執行PHP腳本還是在mysql內寫定時任務?

曾经蜡笔没有小新曾经蜡笔没有小新2793 天前657

全部回覆(5)我來回復

  • 某草草

    某草草2017-05-16 13:05:45

    有幾種方案,各有利弊,看看哪種更適合你吧:
    相關表需要設定好下單時間字段,過期時間字段。
    第一種:crontab定時任務,執行一個php腳本去掃表,過期時間減去下單時間超過三天的都變更成退款狀態。

    第二種:使用mysql的定時規劃任務,下面是個demo,具體邏輯根據你自己的去寫。

    create event myevent
    on schedule at current_timestamp + interval 1 hour (周期或者时间点)
    do
    update myschema.mytable set mycol = mycol + 1;     (执行的sql)

    第三種:使用Redis保存,保存的時候expire過期時間3天即可。

    第一種方案
    優點:簡單,程式碼邏輯改動不大,寫好就用
    缺點:時效性不太好,因為你跑crontab任務肯定是固定的某個時間
    第二種方案
    優點:直接mysql搞定,不用其他環節
    缺點:跟crontab優點類似,另如果你不熟悉mysql計劃任務,還需要去熟悉一下
    第三種方案
    優點:好用,訂單時效性好,而且不用走mysql少一次io
    缺點:可能邏輯層程式碼需要加上redis的邏輯,而且持久化策略、HA,主從要做好,不然宕機就悲劇了。

    回覆
    0
  • PHPz

    PHPz2017-05-16 13:05:45

    用linux crontab定時任務,隔一段時間執行一次某個固定的php腳本~

    回覆
    0
  • 某草草

    某草草2017-05-16 13:05:45

    寫個定時任務,每隔一秒執行一次php腳本。

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:05:45

    透過延時訊息佇列,下單之後進行訊息佇列的寫入任務註冊,三天之後進行觸發;再寫一介面,只是簡單判斷是否進行退款操作

    回覆
    0
  • 高洛峰

    高洛峰2017-05-16 13:05:45

    退款不審核嗎?還直接跑腳本,傾家蕩產的節奏呀!

    回覆
    0
  • 取消回覆