mongo ping函数实例
来源:互联网 发布:pla算法 迭代次数 编辑:程序博客网 时间:2024/06/01 09:35
参考地址 http://php.net/manual/zh/mongocollection.findone.php
mongo 没有 ping函数 所以需要参照PDO的写法, findOne Throws MongoConnectionException if it cannot reach the database.
// mongo instancefunction getMongoCollection($col){ static $mongoClient, $collection = []; try { // init mongoClient if (!$mongoClient) { $mongoClient = mongoClientInit(); } // check mongoClient if (!is_object($mongoClient) || !method_exists($mongoClient, 'selectCollection')) { throw new \MongoConnectionException('reconnect mongo failed'); } // init mongoCollection if (!isset($collection[$col])) { $collection[$col] = mongoCollectionInit($mongoClient, $col); } // ping mongo $collection[$col] = mongoPing($collection[$col], $col); // check mongoPing again if (!is_object($collection[$col])) { throw new \MongoConnectionException('reconnect mongo failed'); } } catch (\MongoConnectionException $e) { error_log($e->getMessage(), 3, ERROR_LOG); } return $collection[$col] ?: null;}function mongoPing($collection, $col){ try { // check collection if (!$collection || !method_exists($collection, 'findOne')) { throw new \MongoConnectionException('mongo connect failed'); } // Throws MongoConnectionException if it cannot reach the database. $collection->findOne([], ['_id' => 1]); } catch (\MongoConnectionException $e) { // log error_log('mongo connect failed and try to reconnect', 3, ERROR_LOG); // init MongoClient $mongoClient = mongoClientInit(); // init MongoCollection if (is_object($mongoClient) && method_exists($mongoClient, 'selectCollection')) { $collection = mongoCollectionInit($mongoClient, $col); } else { $collection = null; } } return $collection;}function mongoClientInit(){ $config = get_config('mongo'); // reconnect mongo 3 times $mongoClient = null; $i = 0; while ($i < 3 && !$mongoClient) { try { $mongoClient = new MongoClient($config['dsn']); } catch (\MongoConnectionException $e) { $i++; } } return $mongoClient;}function mongoCollectionInit($mongoClient, $col){ $config = get_config('mongo'); // get MongoCollection object $i = 0; $collection = null; while ($i < 3 && !$collection) { try { $collection = $mongoClient->selectCollection($config['db'], $col); } catch (\Exception $e) { $i++; } } return $collection;}
阅读全文
0 0
- mongo ping函数实例
- mongo入门实例
- Mongo入门实例
- mongo教程-特殊函数
- mongo MapReduce函数
- Mongo:笔记六(php实例)
- PHP 连接Mongo操作实例
- ping函数实现
- LWIP-ping出问题又一实例
- java操作mongo数据库的实例
- (原生)获取mongo集合对象的实例
- mongo $addToSet获取唯一值实例
- MONGO
- mongo
- mongo
- mongo
- mongo
- mongo
- 基于Restful形式访问远程服务并封装对象
- 随机数生成算法
- angular-bootstrap-nav-tree 插件的应用 abntree
- 欢迎使用CSDN-markdown编辑器
- 树状数组求不带修改前缀最值问题 51NOD 1272 最大距离
- mongo ping函数实例
- 标签控件Tab
- leetcode 309. Best Time to Buy and Sell Stock with Cooldown
- 翻译连载 | JavaScript轻量级函数式编程-第5章:减少副作用 |《你不知道的JS》姊妹篇
- 利用nginx 反向代理解决跨域问题
- LeetCode: 66. Plus One
- 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇
- NGUI_的Atlas图集学习_005
- 树——重建二叉树