谈下 PHP Larvel框架责任链的一些问题

PHP有个很nice的框架:Larvel

这个框架很重,自带功能很多,处理业务能力也不错,但是用的时间长了会发现一个问题:插入数据库有时候会插入失败

如何造成这个问题呢? 一定是并发写入数据库的频率够高

有的人用责任链写代码很舒服,长久以往就会重度依赖责任链,什么是责任链呢? 大家可以自行百度

Larvel里面的责任链说白了就是一个事务,责任链每一步操作就可以回退,在事务里面会进行很多逻辑、业务等的处理,那么问题就来了,在责任链的一开始就进行事务 锁表操作,粒度很大,如果你此时要处理的逻辑很多的话,那么在并发大的情况下会造成数据无法成功插入。

如何解决:有2点

1. 做异常处理,涉及到队列、缓存,如果发现插入不成功,立刻往缓存里写入,由定时任务或者其他程序进行处理

2. 减少锁的粒度,一些逻辑不要在事务里处理

你可能感兴趣的:(服务器)