在PHP中使用MongoClient类,可以将选项'socketTimeoutMS'设置为特定值,从而延长PHP的MongoDB结果等待时间。
例如,对于5分钟的响应等待时间(在MS中)
$cli = new MongoClient($connection_string, array(
'socketTimeoutMS' => 5*60*1000
));
如何在PHP中使用已弃用的Mongo类?
注意我们在使用弃用的Mongo类(不是MongoClient类)的主机上,因此q。
答案 0 :(得分:1)
Mongo类扩展了MongoClient并简单地添加了弃用通知,因此MongoClient支持的任何选项也适用于Mongo。 Mongo类不添加任何其他功能。
注意我们在使用已弃用的Mongo类(不是MongoClient类)的主机上
我不确定你的意思是说应用程序正在使用Mongo类,或者安装的扩展是如此之久以至于MongoClient甚至不可用(在1.3.0之前)。
根据MongoClient changelog,在{1.3}中引入了socketTimeoutMS
选项。在早期版本中,Mongo和MongoClient有一个timeout
构造函数选项,后来被重命名为connectTimeoutMS
(即不是你想要的)。
最初通过设置MongoCursor::$timeout
静态属性来处理所有数据库操作的套接字超时。在当前版本的驱动程序中,我们仍然会检查MongoCursor::$timeout
是否有BC原因,但如果使用它们,我们会发出弃用通知;但是,如果你在1.3.4之前使用某个版本,那很可能就是你想要的。
如果您想基于每个查询自定义超时,您还可以使用MongoCursor::timeout()
。最后,如果您使用的是MongoDB 2.6+,您应该考虑使用服务器端超时(通过MongoCursor::maxTimeMS()
和maxTimeMS
命令选项。服务器端超时通常更好,因为它们不会导致客户端突然终止操作并使其在服务器上运行。