要做一個類似的功能:
如設定一個日期每月20號,在這日期的前幾天來提醒使用者該送禮了。
日期可以設定為幾月幾日、也可為每月幾號等。提醒時間可以是當天提醒、前一周提醒等?
這種功能後台資料庫該如何設計,需要幾張表? 訊息推送功能有了,如何檢測什麼時候推送? 後台寫個定時任務來不斷運行?
回複內容:
要做一個類似的功能:
如設定一個日期每月20號,在這日期的前幾天來提醒使用者該送禮了。
日期可以設定為幾月幾日、也可為每月幾號等。提醒時間可以是當天提醒、前一周提醒等?
這種功能後台資料庫該如何設計,需要幾張表? 訊息推送功能有了,如何檢測什麼時候推送? 後台寫個定時任務來不斷運行?
兩個定時任務,三個表
1.禮物表,裡面有什麼時候發送欄位,是否發送欄位
2.訊息表,是否發送,發送的是什麼,發送給誰
3.訊息人表,每個人的訊息這提取
任務一,掃描任務表,如果沒發送且到時間了,插入一條資料到訊息表
任務二,掃描訊息表,有訊息了就根據系統發送訊息,,,,,他是個公用表,不一定就用來發禮物
需要判斷應用環境,在web訪問中,再使用者訪問時去做判斷.
需要幾張表看你們具體業務需求,業務需求不複雜的一張資訊表足矣。你要是設定定時的肯定需要設定指令碼的。或者你用第三方推送極光推送都可以的
資料字典
1 使用者資訊表用欄位is_accept 來存放使用者是否開啟訊息提示
2 建立訊息推送配置表
id 主鍵
task_obj擴充欄位
title 標題
content 內容
on_time 結束時間
status 平台是否開啟訊息提示
days 提前幾天提醒(這個欄位也可以給使用者設定,存在使用者資訊表,讓使用者來決定什麼時候提示他)
tips 推送幾次
interval_time 推送間隔(同一個使用者多久推送一次)
3 訊息推送日誌表
id 主鍵id
uid 使用者id
tid 訊息配置id
on_time 發送推送時間
4 php商務邏輯
//擷取要使用者表is_accept為1的所有使用者迴圈
foreach{ //擷取推送配置資訊表 //判斷使用者是否已推送, //判斷 目前時間-使用者上次推送時間>=配置間隔時間 //判斷是否已達到最大推送次數 //寫入推送記錄表 }
5 實現
如果是linux系統 建議使用系統命令curl
windows系統 建議自己寫進程守護,或者使用urlcron