Php MongoDB杀死不朽的游标

Php MongoDB杀死不朽的游标,php,mongodb,cursor,Php,Mongodb,Cursor,我使用的是PHP mongodb/mongodb驱动程序V1.1.2 低级驾驶员信息: mongodb version => 1.1.7 mongodb stability => stable libmongoc version => 1.3.5 libbson version => 1.3.5 MongoDB 3.4.7和3.4.10 连接选项: socketTimeoutMS=3600000 光标选项: maxTimeMs: 360000 noCursorTime

我使用的是PHP mongodb/mongodb驱动程序V1.1.2

低级驾驶员信息:

mongodb version => 1.1.7
mongodb stability => stable
libmongoc version => 1.3.5
libbson version => 1.3.5
MongoDB 3.4.7和3.4.10

连接选项:

socketTimeoutMS=3600000
光标选项:

maxTimeMs: 360000
noCursorTimeout: true
所以我假设游标一定是不朽的

程序正常运行,然后崩溃,出现以下错误:

[29-Nov-2017 15:23:04 UTC] PHP Fatal error:  Uncaught MongoDB\Driver\Exception\RuntimeException: Cursor not found (namespace: 'xxxx.yyyy', id: 6220790657981310420).
在mongos日志中我看到了

2017-11-29T15:21:12.025+0000 I QUERY    [ClusterCursorCleanupJob] Marking cursor id 6220790657981310420 for deletion, idle since 2017-11-29T15:11:11.139+0000
2017-11-29T15:21:16.026+0000 I QUERY    [ClusterCursorCleanupJob] Marking cursor id 6220790657981310420 for deletion, idle since 2017-11-29T15:11:11.139+0000
2017-11-29T15:21:20.026+0000 I QUERY    [ClusterCursorCleanupJob] Marking cursor id 6220790657981310420 for deletion, idle since 2017-11-29T15:11:11.139+0000
...
2017-11-29T15:22:56.029+0000 I QUERY    [ClusterCursorCleanupJob] Marking cursor id 6220790657981310420 for deletion, idle since 2017-11-29T15:11:11.139+0000
2017-11-29T15:23:00.029+0000 I QUERY    [ClusterCursorCleanupJob] Marking cursor id 6220790657981310420 for deletion, idle since 2017-11-29T15:11:11.139+0000
2017-11-29T15:23:04.029+0000 I QUERY    [ClusterCursorCleanupJob] Marking cursor id 6220790657981310420 for deletion, idle since 2017-11-29T15:11:11.139+0000
请注意,“idle-since”时间戳对于所有行都是相同的。我很确定那个程序正在积极地从那个游标获取数据

我没有光标创建的确切时间,但它发生的时间不早于15:03:35


这个问题非常罕见。我有很多活跃的光标,其中一些可以存活数小时。这一个在20分钟后被清理

唯一支持的收集选项是

  • 重新关注
  • 阅读偏好
  • 类型图
  • 写入中心

maxtimes
noCursorTimeout
光标的选项。您需要在
find()
和类似命令中传递它们


如何设置光标选项?@AlexBlex$collection=$client->selectCollection(“xxxx”、“yyyy”)->带有选项(['maxtimes'=>3600000,'noCursorTimeout'=>true]);