Z J*_*nes 6 php mongodb mongodb-php
我有2个集合:A(3.8M docs)和B(1.7M docs)
我有一个PHP脚本,我从shell运行:
一旦完成了a中所有文档的循环:
4)循环遍历php数组
5)插入集合C
在(1)期间,我一直得到:PHP致命错误:未捕获异常'MongoCursorException',消息'找不到光标'最后处理的项目是#8187 of 3872494.
real 1m25.478s
user 0m0.076s
sys 0m0.064s
Run Code Online (Sandbox Code Playgroud)
再次运行它,代码没有变化,在项目#19826/3872495处引发了异常
real 3m19.144s
user 0m0.120s
sys 0m0.072s
Run Code Online (Sandbox Code Playgroud)
再次,#8181/387249
real 1m31.110s
user 0m0.036s
sys 0m0.048s
Run Code Online (Sandbox Code Playgroud)
是的,我意识到我可以(并且可能应该)捕获异常......但是......为什么它甚至被抛出?特别是在进入数据库的这种不同的经过时间/深度.
如果有帮助,我的设置是3节点副本集(2 + arb).我让二级离线并尝试了主要的运行.相同的结果(处理的结果数量和次数不同,但总是抛出Cursor Not Found异常).
Gat*_* VP 10
是的,我意识到我可以(并且可能应该)抓住异常......
是的,这绝对是第一件事.异常发生有几十个合理的原因?当主要离线并变得无法访问时,您认为会发生什么?
......为什么甚至被抛出?
有几个潜在的原因,但让我们直接切入你看到的错误代码.
MongoDB PHP驱动程序有两种不同的超时:
你正在达到游标超时.您可以连接到数据库,但您的查询"时间不多了".
可能的修复:
_ids从A中获取前1000个,处理它们然后标记您已经这样做了.然后获得_ids比上次运行更大的下一个1000 ,依此类推.我会建议#2以及处理异常.即使这些不能完全解决问题,它也可以帮助您隔离和缓解问题.
| 归档时间: |
|
| 查看次数: |
6750 次 |
| 最近记录: |