需求是,在用户进行了一个操作之后,倒计时俩小时,然后到时间点执行另一个操作
但是现在没有办法来进行这两个小时的计时。
请问有没有什么好的思路
ringa_lee
我的思路是,通过队列延迟分发一个任务,就是2小时后触发,然后在任务中发送一个短信即可。以下是文档链接:
队列延迟分发
短信通知
建一张表,存用户手机号,短信内容,应发送的时间。用户点击一次就新增一行记录。设置一个定时任务,每分钟检查一次,到了时间就发送,发完就删除这条记录
把要执行的任务名及执行时刻塞进redis有序集合中,然后定时检查redis有序集合的分值,如果在范围内就取出执行任务
用户操作的时候肯定会存一个操作时间到表里,守护进程一直去查询到两个小时的时候发短信
这就是定时器和消息队列的需求。。。
linux 使用crontab 而window這種界面系統有其定制任務,使用定時任務curl指定php文件,又或者使用php執行php文件。這樣的話通過每分鐘執行定時訪問(類似輪詢),在訪問php文件時候讀取存儲數據表的數據(條件兩個小時數據),你需要將數據丟進隊列內(避免數據量過大時候,大量發送信息導致服務器資源使用過大),最後將隊列裡抽取定量數據,進行發送數據
用crontab,跑数据库的任务队列
你可以利用一个php的异步框架,如workerman或者swoole 建立一个定时器,就可以在你需要的时候执行任务!!!
把要触发的时间和事件保存下来,脚本每分钟去跑数据,到点了就执行,最简单了
我的思路是,通过队列延迟分发一个任务,就是2小时后触发,然后在任务中发送一个短信即可。
以下是文档链接:
队列延迟分发
短信通知
建一张表,存用户手机号,短信内容,应发送的时间。
用户点击一次就新增一行记录。
设置一个定时任务,每分钟检查一次,到了时间就发送,发完就删除这条记录
把要执行的任务名及执行时刻塞进redis有序集合中,然后定时检查redis有序集合的分值,如果在范围内就取出执行任务
用户操作的时候肯定会存一个操作时间到表里,守护进程一直去查询到两个小时的时候发短信
这就是定时器和消息队列的需求。。。
linux 使用crontab 而window這種界面系統有其定制任務,使用定時任務curl指定php文件,又或者使用php執行php文件。這樣的話通過每分鐘執行定時訪問(類似輪詢),在訪問php文件時候讀取存儲數據表的數據(條件兩個小時數據),你需要將數據丟進隊列內(避免數據量過大時候,大量發送信息導致服務器資源使用過大),最後將隊列裡抽取定量數據,進行發送數據
用crontab,跑数据库的任务队列
你可以利用一个php的异步框架,如workerman或者swoole 建立一个定时器,就可以在你需要的时候执行任务!!!
把要触发的时间和事件保存下来,脚本每分钟去跑数据,到点了就执行,最简单了