84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
我要做一个自动退款功能?比如说他付款后三天内容没有人回复他,就自动进入退款流程!但是如何写这个定时任务呢?是每隔一秒钟就去运行PHP脚本还是在mysql内写定时任务?
有几种方案,各有利弊,看看哪种更适合你吧:相关表需要设置好下单时间字段,过期时间字段。第一种: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,主从要做好,不然宕机就悲剧了。
用linux crontab定时任务,隔一段时间运行一次某个固定的php脚本~
写个定时任务,每隔一秒执行一次php脚本。
通过延时消息队列,下单之后进行消息队列的写入任务注册,三天之后进行触发;再写一接口,只是简单判断是否进行退款操作
退款不审核吗?还直接跑脚本,倾家荡产的节奏呀!
有几种方案,各有利弊,看看哪种更适合你吧:
相关表需要设置好下单时间字段,过期时间字段。
第一种:crontab定时任务,执行一个php脚本去扫表,过期时间减去下单时间超过三天的都变更成退款状态。
第二种:使用mysql的定时计划任务,下面是个demo,具体逻辑根据你自己的去写。
第三种:使用Redis保存,保存的时候expire过期时间3天即可。
第一种方案
优点:简单,代码逻辑改动不大,写好就用
缺点:时效性不太好,因为你跑crontab任务肯定是固定的某个时间
第二种方案
优点:直接mysql搞定,不用其他环节
缺点:跟crontab优点类似,另如果你不熟悉mysql计划任务,还需要去熟悉一下
第三种方案
优点:好用,订单时效性好,而且不用走mysql少一次io
缺点:可能逻辑层代码需要加上redis的逻辑,而且持久化策略、HA,主从要做好,不然宕机就悲剧了。
用linux crontab定时任务,隔一段时间运行一次某个固定的php脚本~
写个定时任务,每隔一秒执行一次php脚本。
通过延时消息队列,下单之后进行消息队列的写入任务注册,三天之后进行触发;再写一接口,只是简单判断是否进行退款操作
退款不审核吗?还直接跑脚本,倾家荡产的节奏呀!