php 實現待辦記事列表 比如客戶生日是18號,那麼18號當天就是出現在列表了,或者客戶每個月30號需要對賬單,那30號當天列表就會顯示,小白求教?


我理解整理一下你的需求,本程序需要提供的功能。

  1. 記錄待辦事項,輸入內容為【待辦事項內容】、【提醒時間】
  2. 查詢待辦事項,查詢條件為【當前時間】&>=【 提醒時間】,如當前時間是8點,提醒時間為7點

一、數據表設計

// schedule 表

//content【待辦事項內容】
//time 【提醒時間】
+-----+----------------+---------------------+
| id | content | time |
+-----+----------------+---------------------+
| 1 | 知乎問題解答 | 2020-10-14 14:00:00 |
| 2 | PHP開發學習 | 2020-10-15 8:08:08 |
+-----+----------------+---------------------+

二、業務邏輯

1. 記錄待辦事項

&prepare("INSERT INTO schedule (content,time) VALUES (:content, :time)");
$stmt-&>bindParam(:content, $namecontent;
$stmt-&>bindParam(:time, $time);

//插入一行
$content = $_POST[content]; //待辦事項內容
$time = $_POST[time]; //提醒時間

$stmt-&>exec();

2. 查詢待辦事項

&query(sprintf(SELECT * FROM schedule WHERE time &> "%s" and time &< "%s",$currentTime,$tomorrow)); $rows = $stm-&>fetchAll(PDO::FETCH_NUM);

//輸出所有待辦事項
foreach($rows as $row) {
printf("$row[0] $row[1] $row[2]
");
}

三、結論

核心的邏輯就是,判斷【當前時間】&>=【提醒時間】


其實很簡單,如果只是邏輯上的重複和提醒,定時任務都不需要,寫好邏輯,在訪問的時候執行相關邏輯就可以了.比如我做的這個,看截圖.

在我這個邏輯中,都沒用到定時任務.進入頁面的時候執行相關邏輯就可以.

不過你的最好是使用定時任務,你擔心的是每天執行一遍,每天都會查詢大量的數據(或者說會查出大量的數據,感覺沒必要).

比較原始的做法,就是每天把表查出來,根據相關狀態發出提醒,做業務處理.

這裡有兩個數據量問題,第一個是存儲的數據量,第二個是查詢的數據量.

存儲的數據量沒法優化,

但是第二個查詢的數據量是可以優化的,可以設置一個等待掃描時間戳欄位,查詢的時候用這個欄位過濾一下.這樣不用把所有的數據都查出來,只查詢當需要查詢的.

看截圖的最後一個欄位,效果是這樣的,新數據這個欄位是0,查詢的時候查詢 scan_lock_time小於當前時間得數據,這時候會處理數據,如果發現這個數據需要等到8天後才輪到處理,那就本次就給這個欄位標記上8天之後的時間,這樣8天內都不會查詢出這條記錄.直到第八天輪到他處理了,處理完之後,在標記上下一次應當處理的時間.

在我截圖的這裡,會對數據做一次查詢,查詢的時候加上27行這樣的條件.

在處理的時候,會計算這條數據是否需要處理,此時算一下是不是應當處理,如果不應當處理,那就把這個欄位標記上應當處理的時間,這樣的話,在應當處理之前,都不會查詢出來這條記錄


一切重複性的業務寫好邏輯,定時任務處理即可。有什麼問題嗎


一張事件生成規則表

規則部分,如每年、每月、每日、僅一次數據部分,如每年的哪個月份的哪一天,每月的哪一天,每天的哪個具體時間一張存放生成後的事件表存放事件的詳細內容,以及事件的處理狀態等寫一個計劃任務每天跑一遍事件生成規則表把滿足條件的規則生成出對應的事件添加到事件表展示事件顯示事件表中未完成的事件

創建一個事件表,判斷欄位有提醒日期和提醒類型,然後就用日期函數±日周月年與當前日期對比就行了


感謝回答,還有一個問題沒有解決,就是重複性事件,比如每隔15天針對某個客戶進行一次回訪,每個月22號還信用卡

問題:這些事件是一次性寫入資料庫還是 每天訪問列表時進行判斷處理,然後顯示到列表上.

1.一次寫入將是一個死循環,或者數據量過大,會不會寫入和查詢時間過大,影響性能?

2.資料庫中寫入需要重複的事件,每天訪問列表時判斷符合規則的事件,然後顯示在列表上,

就是卡在規則如何設置這個點上,希望前輩們指點一二


推薦閱讀:
相关文章