我目前正在进行一些个人测试和基准测试,以比较使用MongoDB和
MySQL与真实世界示例数据之间的工作流程和效率.
为了在每个数据库中设置我的数据,我正在做几千个循环并随机创建数据对象以插入到数据库中.
但是我在PHP中使用Mongo类时遇到了一些问题,我无法解决.问题是这样的:
我有一个循环,它创建一个新的Mongo实例和连接,将一个小数组插入一个集合,然后关闭连接.此循环应运行20000次.然而,当它试图创建实例/建立连接时,它始终在16300nd循环(最小值为16200,最大值为16350,我会说几次运行后)失败.
循环中的代码如下:
$data = get_random_user_data(); $mongo = new Mongo('mongodb://admin:password@localhost:27017/test'); if ($mongo->test->users->insert($data)) { $users[] = array('id' => $data['_id'],'name' => $data['username']); echo $i." - Added user: ".$data['username'].'<br/>'; } $mongo->close();
get_random_user_data()只返回一个简单的关联数组.
我得到的错误是:
Fatal error: Uncaught exception 'MongoConnectionException' with message 'Unknown error'
在线上:
$mongo = new Mongo('mongodb://admin:password@localhost:27017/test');
有任何想法吗?有什么基本的东西我会像一些安全或垃圾邮件预防一样缺失吗?
提前致谢.
额外信息:
脚本在大约114.9797秒死亡.它不是PHP内存或基于时间的问题,因为提出了所有限制,我运行我的MysqL基准测试昨天插入120000行(使用相同的循环打开连接,插入,关闭连接的方法)大约一个小时没有问题.
运行PHP 5.3.5版
PHPinfo Mongo信息:
MongoDB Support enabled Version 1.2.0- Directive Local Value Master Value mongo.allow_empty_keys 0 0 mongo.allow_persistent 1 1 mongo.auto_reconnect 1 1 mongo.chunk_size 262144 262144 mongo.cmd $ $ mongo.default_host localhost localhost mongo.default_port 27017 27017 mongo.long_as_object 0 0 mongo.native_long 0 0 mongo.no_id 0 0 mongo.utf8 1 1