关于 PDO::lastInsertId()
虽然有这个方法,刚开始接触的时候还真不敢用,因为怕不是线程安全的。
例如A插入数据,B插入数据,然后A::lastInsertId(),B::lastInsertId() ,那A::lastInsertId()获得的自增ID是A还是B插入的?
简单地试验了一下,不管插入或lastInsertId()的顺序怎样,或者还有C,D,E,A::lastInsertId(),B::lastInsertId()都是获取到各自插入的自增ID。
网上查了资料,也是说可以放心使用,不管是否使用长连接都没问题。
嗯,像ThinkPHP什么的都用,就用吧。
对于PDO::ATTR_PERSISTENT
在高并发下应该使用。使用AB压力测试,在没有设置长连接之前会有很多Failed requests。
虽然PHP是解析的,也没有像容器之类的东西,但这个长连接是由扩展库维护的,也相当于有一个数据库连接线程池,页面的数据库请求需要的时候就从池里获取。
是这样理解的吧?
长连接也会有断开的时候,一段时间没操作的时候会报那个连接关闭后还进行操作的错误,我目前在连接时使用PDO::ATTR_TIMEOUT应对一下。