tp5 mysql定时任务_tp5+mysql实现消息队列,并在mac系统下定时执行-Go语言中文社区...

这篇博客介绍了如何在高并发场景下,通过PHP和消息队列来确保订单系统的稳定性和配货系统的独立性。在订单压力增大时,系统将订单信息保存并设置为未处理状态,然后利用定时任务更新处理中的订单状态,最终完成配送后更新订单为已完成。博主在Mac系统下实现了定时消息队列,并解决了在本地测试时遇到的数据库连接问题。

Demo简介

订单系统和配货系统之间的信息传递,当订单系统压力比较大时或者出现故障时不影响到配货系统,所以就用了消息队列和定时系统。

Demo准备

1.创建一张数据表重点内容

status:0未处理,1已完成,2.处理中

bc24e1c065c2613ac7f3dc5bacae26c7.png

2.下载tp5

3.mac系统

4.php7.0(我的是php7.0)

Demo流程

1.客户下单(如果是在高并发的情况下,订单系统压力会很大)

2.把订单信息保存到数据表中,并且status为0

3.配送首先更新两条数据把status改为2(每次处理两条订单)

4.配送处理(这个过程的代码根据实际业务,这里没有说明)

5.配送完成后,修改订单状态,并且更新订单时间

代码实现

1.我先把模型中的代码展示出来,主要是对订单操作的封装

1fe97b219e59435b3f7f5d9e65d511e5.png

2.添加订单

我是通过这种方式来添加订单

bfb1ba50d39a70244a4003eedf57b41b.png

添加订单代码

f5fea2bfee96cfea8571433818665ff0.png

3.mysql消息队列实现配货系统

e2ea192ed06697913586b641bc256235.png

在Mac系统下实现定时消息队列

1.首先编写.sh文件

ce40e37514b61b1620debe552d103fd0.png

2.在mac命令行下执行 crontab -e (用来添加系统定时任务)

85444d3c7f26a4f3854519a0f59e9ef7.png

上面命令的功能是,每分钟执行一次那个路径下的.sh文件,并且把执行结果输出到那个路径下log.log日志文件中

最后执行结果

9bf39db79861b89cd6a5c4c72ba816d3.png

在此过程中遇到的问题

3f858b3d005de06aa7ff009d937a003a.png

我的解决步骤

1.在命令行输入.sh中写的php命令发现成功,认为是文件权限的问题

2.把tp5中的所有文件权限全部更改为可读可写(事实证明是错误的)

3.最后通过度娘发现,如果是在本地测试的话,需要把tp5中database文件中的localhost改为127.0.0.1可能是个bug,至今不懂。如果有知道的欢迎留言

参考第三方

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值