源码分享站 - 分享有用的

fatfree 展示 mongo.php源代码

返回 下载fatfree: 单独下载mongo.php源代码 - 下载整个fatfree源代码 - 类型:.php文件
  1. <?php
  2.  
  3. /*
  4.  
  5.         Copyright (c) 2009-2016 F3::Factory/Bong Cosca, All rights reserved.
  6.  
  7.         This file is part of the Fat-Free Framework (http://fatfreeframework.com).
  8.  
  9.         This is free software: you can redistribute it and/or modify it under the
  10.         terms of the GNU General Public License as published by the Free Software
  11.         Foundation, either version 3 of the License, or later.
  12.  
  13.         Fat-Free Framework is distributed in the hope that it will be useful,
  14.         but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.         General Public License for more details.
  17.  
  18.         You should have received a copy of the GNU General Public License along
  19.         with Fat-Free Framework.  If not, see <http://www.gnu.org/licenses/>.
  20.  
  21. */
  22.  
  23. namespace DB;
  24.  
  25. //! MongoDB wrapper
  26. class Mongo {
  27.  
  28.         //@{
  29.         const
  30.                 E_Profiler='MongoDB profiler is disabled';
  31.         //@}
  32.  
  33.         protected
  34.                 //! UUID
  35.                 $uuid,
  36.                 //! Data source name
  37.                 $dsn,
  38.                 //! MongoDB object
  39.                 $db,
  40.                 //! MongoDB log
  41.                 $log;
  42.  
  43.         /**
  44.         *       Return data source name
  45.         *       @return string
  46.         **/
  47.         function dsn() {
  48.                 return $this->dsn;
  49.         }
  50.  
  51.         /**
  52.         *       Return UUID
  53.         *       @return string
  54.         **/
  55.         function uuid() {
  56.                 return $this->uuid;
  57.         }
  58.  
  59.         /**
  60.         *       Return MongoDB profiler results (or disable logging)
  61.         *       @param $flag bool
  62.         *       @return string
  63.         **/
  64.         function log($flag=TRUE) {
  65.                 if ($flag) {
  66.                         $cursor=$this->selectcollection('system.profile')->find();
  67.                         foreach (iterator_to_array($cursor) as $frame)
  68.                                 if (!preg_match('/\.system\..+$/',$frame['ns']))
  69.                                         $this->log.=date('r',$frame['ts']->sec).' ('.
  70.                                                 sprintf('%.1f',$frame['millis']).'ms) '.
  71.                                                 $frame['ns'].' ['.$frame['op'].'] '.
  72.                                                 (empty($frame['query'])?
  73.                                                         '':json_encode($frame['query'])).
  74.                                                 (empty($frame['command'])?
  75.                                                         '':json_encode($frame['command'])).
  76.                                                 PHP_EOL;
  77.                 } else {
  78.                         $this->log=FALSE;
  79.                         $this->setprofilinglevel(-1);
  80.                 }
  81.                 return $this->log;
  82.         }
  83.  
  84.         /**
  85.         *       Intercept native call to re-enable profiler
  86.         *       @return int
  87.         **/
  88.         function drop() {
  89.                 $out=$this->db->drop();
  90.                 if ($this->log!==FALSE)
  91.                         $this->setprofilinglevel(2);
  92.                 return $out;
  93.         }
  94.  
  95.         /**
  96.         *       Redirect call to MongoDB object
  97.         *       @return mixed
  98.         *       @param $func string
  99.         *       @param $args array
  100.         **/
  101.         function __call($func,array $args) {
  102.                 return call_user_func_array([$this->db,$func],$args);
  103.         }
  104.  
  105.         //! Prohibit cloning
  106.         private function __clone() {
  107.         }
  108.  
  109.         /**
  110.         *       Instantiate class
  111.         *       @param $dsn string
  112.         *       @param $dbname string
  113.         *       @param $options array
  114.         **/
  115.         function __construct($dsn,$dbname,array $options=NULL) {
  116.                 $this->uuid=\Base::instance()->hash($this->dsn=$dsn);
  117.                 $class=class_exists('\MongoClient')?'\MongoClient':'\Mongo';
  118.                 $this->db=new \MongoDB(new $class($dsn,$options?:[]),$dbname);
  119.                 $this->setprofilinglevel(2);
  120.         }
  121.  
  122. }
  123.  
单独下载 单独下载mongo.php源码 - 下载整个fatfree源程序
相关源码/软件:
TSA-Travel-Sentry-master-keys - TSA 主密钥的 3D 再现 2017-05-12
python3-cookbook - 《Python Cookbook》 3rd Edition Translatio 2017-05-12
isso - Disqus 替代 https://posativ.org/isso/ 2017-05-12
hologram - 降价基于文件系统的风格指南。 http://trulia.github.io... 2017-05-12
www.html5rocks.com - .......a 争创一流资源为 web 开发人员 2017-05-12
rolify - Role management library with resource scoping ... 2017-05-13
jquery-mockjax - JQuery Mockjax 插件提供了简单、 极其灵活的接口,以嘲笑或模拟 ajax 请求和响应 2017-05-13
yo - CLI 工具运行自耕农发电机 http://yeoman.io 2017-05-13
GrowingTextView - UITextView 增长/收缩与文本并开始滚动时的含量达到一定数量的行。类似于苹果在 SMS 应用... 2017-05-13
phan - 潘是 php 的静态分析器。潘倾向于避免误报,并试图证明不正确,而不是正确性。 2017-05-13
CRYENGINE - CRYENGINE 是由 Crytek 创建一个功能强大的实时游戏开发平台。 ... 2017-06-11
postal - 2017-06-11
reactide - Reactide 是反应 web 应用程序开发的第一个专用的 IDE。http://reactide... 2017-06-11
rkt - rkt 是为 Linux 的 pod 本机容器引擎。它是可组合、 安全和建筑标准。 2017-06-11
uWebSockets - 小小的 Websocket https://forest.webvrexpe... 2017-06-11
realworld - 真实的世界-动力反应、 角、 节点,Django,和更多的模范 fullstack Medium.c... 2017-06-11
goreplay - GoReplay 是用于捕获和重播活 HTTP 交通到测试环境以不断地测试您的系统与实际数据的开源工... 2017-06-10
pyenv - 简单的 Python 版本管理 2017-06-10
redux-saga - Redux 应用程序替代副作用模型 https://redux-saga.g... 2017-06-10
angular-starter - 2017-06-10

 返回顶部