1. 大批量insert,update,remove中可能会因为操作超时而发生异常
在对php+mongodb进行性能测的过程中发现一个问题,mongodb的insert,update,remove等函数有一个默认的30秒超时问题
如:
$coll->remove();
试图使用上面的语句清空coll中的所以记录是,你会发现若果在上面语句的后面加一句:
$count = $coll->count();用来测试remove返回时是不是真已经删空了
后面这条语句就会触发一个30秒超时的异常,经过研究我发现其实是remove操作超过了30秒,在remove中30秒都还没收到数据库的回应信息,remove将返回(但其实remove这条指令已经下发给数据库,因此删除操作还继续执行)返回后接着执行$count = $coll->count();,但是这里就有问题了,因为这时候remove删除操作没没结束,
貌似remove语句给数据库上锁了,$count = $coll->count();执行的时候由于remove操作还没完成,也就是还没解锁,就等呀等呀,30秒超时后抛出异常,终止。
remove原型:
public bool|array MongoCollection::remove ([ array