威尼斯城所有登入网址

威尼斯城所有登入网址 3
复制代码 代码如下威尼斯城所有登入网址,1.先做个最简单的上传文件
威尼斯城所有登入网址 19
而且目前关于VIM设置的文章都用一个比较老的插件威尼斯城所有登入网址:,Eclipse的安装就不说了

WINDOWS下的安装威尼斯城所有登入网址:,在持久连接和连接池方面

1.3本子的PHP MongoDB
driver重写了连接管理库,和早前版本对照,在通宵达旦连接和连接池方面,都有了根本的成形。

  1. MongoDB的PHP驱动

 

前面用过MongoDB,也安装过。但又二遍安装mongoDB并且安顿客商名和密码,忘记了手续,废了超级大的劲才成就。那个时候记录下来了,将来重新整建二回。便于本人的上学和记念。

1.2本子的接连管理

1.2本子的驱动引进了连接池,在举办其它查询时,都会从连接池中号召二个老是,完毕以后再归还给连接池。这里的达成是指装有该连接的变量离开了它的效率域,上边是贰个示范。

最轻巧易行的本子:

<?php
$m = new MongoClient();    // ← 从连接池请求连接
$c = $m->demo->test;
$c->insert( array( 'test' => 'yes' ) );
?>

← $m离开成效域,连接归还给连接池

在函数中:

<?php
function doQuery()
{
        $m = new MongoClient();    // ← 从连接池请求连接
        $c = $m->demo->test;
        $c->insert( array( 'test' => 'yes' ) );
} // ← $m离开作用域,连接归还给连接池
?>

在好几情状下,系统或然会发生大批量的总是,举例在ORMs/ODMs的某些复杂结构中引用连接对象,如下例子:

<?php
for ( $i = 0; $i < 5; $i++ )
{
        $conns[] = new MongoClient();
}// ← 现在有5个连接
?>

MongoDB在PHP驱动程序是二个PHP扩大,在多边阳台下都比较轻巧安装。PHP5.1及以上版本的种类就足以了。

要访问数据库,那么对拜望权限的安装是必需的!

WINDOWS下的安装

1.3本子的三番四遍管理

在1.3本子中,连接处理做了异常的大改观。每一个worker进度(线程、PHP-FPM或Apache
worker卡塔尔中,驱动把连接管理和Mongo*对象分别,裁减驱动的复杂度。上面以单个节点的MongoDB实例来声明驱动如哪个地点理连接。

当四个worker进程运行,MongoDB驱动会为之起首化连接微型机管理总是,况且默许未有连接。

在率先个乞请调用new
MongoClient(卡塔尔;时,驱动创制多少个新连接,并且以一个哈希值标志那几个三回九转。那一个哈希值包含以下参数:主机名、端口,进程ID和可选的replica
set名,要是是密码验证的总是,则还满含数据库名、客户名和密码的哈希值(对于密码验证的连接,大家前边再详尽钻探)。调用MongoClient::getConnections(卡塔尔国方法,能够查看连接对应的哈希值:

<?php
$m = new MongoClient( 'mongodb://whisky:27017/' );
var_dump( $m->getConnections()[0]['hash'] );
?>

输出:

string(22) “whisky:27017;-;X;22835″

输出中的”-”表示该连接不归属有个别replica
set,”X”是未有客商名、数据库和密码时的占位符,22835是当下进程的长河ID。

下一场该连接会在三番两遍微电脑中注册: 威尼斯城所有登入网址 1

在急需三番五次的其余时候,包涵插入、删除、更新、查找或实施命令,驱动都会向微电脑乞求二个适中的一而再来实践。诉求连接时会用到new
MongoClient(卡塔尔(قطر‎的参数和当下历程的ID。各类worker过程/线程,连接微处理机都会有三个总是列表,而各类PHP
worker同一时刻,只会运作一个号召,因此和各种MongoDB之间只需求多个一连,不断重用,直到PHP
worker终止或显式调用MongoClient::close(卡塔尔(قطر‎关闭连接。

率先查看phpinfo(State of Qatar的输出,鲜明运维的PHP版本和VC版本。这里VC版本能够容易地通晓为PHP的编写翻译机制,假若用的是Apache,则须求VC6,不然须要VC9,举例IIS。有个别Zend用的VC8。还要小心是不是是线程安全的(Thread
Safety),对应到PHP的驱动包名中缩写为“ts”。同时要精通extension_dir的值,全数的扩张组件都投身此处。

1、启用权限调整(-auth),当启用MongoDB数据库服务时,对参数的装置能够调节是还是不是启用权限调整
   不开启: mongod -dbpath=D:/MongoDB/Data
-logpath=D:/MongoDB/Log/test.log
    开启: mongod -dbpath=D:/MongoDB/Data
-logpath=D:/MongoDB/Log/test.log -auth

1.下载mongodb,用.msi版本,那样的话比较方便连忙,不用去本人陈设意况变量了。

Replica sets

在存在复制集的条件中,情况有一点点不平等。new
MongoClient(卡塔尔(قطر‎的连接字符串中,要求钦点多少个hosts,并标示当前正值实用复制集:

$m = new
MongoClient(“mongodb://whisky:13000,whisky:13001/?replicaSet=seta”);

当中的replicaSet参数无法大概,否则驱动会以为你是筹算连接八个分裂的mongos进度。

在实例化时,驱动会检查复制集的拓扑布局。上边例子的输出,显示在调用new
MongoClient(State of Qatar之后,复制集中具有可以预知的数目节点都会在管理器中登记多少个连接:

<?php
$m = new MongoClient( 'mongodb://whisky:13001/?replicaSet=seta' );
foreach ( $m->getConnections() as $c )
{
    echo $c['hash'], "\n";
}
?>

输出:

whisky:13001;seta;X;32315 whisky:13000;seta;X;32315

即便三番五次字符串中绝非whisky:13000节点,可是微机中曾经登记了多少个一而再:

威尼斯城所有登入网址 2

微型机不止带有连接的哈希值和TCP/IP
socket,还保存哪个节点是主节点,以致各种节点的“间距”。下边的剧本显示了这么些额外的消息;

<?php
$m = new MongoClient( 'mongodb://whisky:13001/?replicaSet=seta' );
foreach ( $m->getConnections() as $c )
{
    echo $c['hash'], ":\n",
        " - {$c['connection']['connection_type_desc']}, ",
        "{$c['connection']['ping_ms']} ms\n";
}
?>

输出:

whisky:13001;seta;X;5776: – SECONDARY, 1 ms whisky:13000;seta;X;5776:
– PRIMARY, 0 ms

使得把操作分为两体系型:写操作,富含插入、更新、删除和指令;读操作,包蕴find和findOne。默许情形下,若无设置读偏好参数,微处理器会一贯重临主节点的延续。读偏疼参数能够由此setSlaveOkay(卡塔尔(قطر‎设置,也得以在一而再三番两回字符串中装置:

$m = new MongoClient("mongodb://whisky:13000,whisky:13001/?replicaSet=seta&readPreference=secondaryPreferred");

加多那一个参数后,连接字符串变得专程长,因而PHP驱动允许将精选放在数组中,作为第叁个参数字传送入:

$options = array(
        'replicaSet' => 'seta',
        'readPreference' => 'secondaryPreferred',
);
$m = new MongoClient("mongodb://whisky:13000,whisky:13001/", $options);

对此种种操作,驱动向微处理器伏乞获取贰个适当的连天。对于写操作,会一贯再次来到主节点的连续几天;对于读操作,若是扶持节点可用且“间距”不远的话,则会重返该帮忙节点的总是。

2.
在Windows下安装PHP的MongoDB扩展

    由地点的两条开启服务的吩咐来看,是由运行命令mongod的参数
-auth决定,假诺不打开,那么对数据库都得以访谈。倘使翻开,那么就须求输入客商名和密码(-auth(‘顾客’,’密码’卡塔尔(قطر‎State of Qatar来开展授权,假如对的的则赶回1,否则重临0

2.设置到钦定的目录下,比如D:\mongoDB\mongo下,在安装目录下建data文件夹,然后data下建db文件夹,用来贮存在数据库,创设log文件夹,用于寄存log日志。data下再建设布局二个mongo.config文件,用于存放mongo的结构文件。

证实的接连几天

纵然MongoDB启用验证成效,那么连接的哈希值会包涵验证相关的哈希值。那样不一样脚本,使用不一致的顾客名、密码连接同二个MongoDB上的区别的数据库时,能够相互区分,而不会误用连接。下边示例使用admin客户名连接admin数据库,然后观看hash值的扭转:

<?php
$m = new MongoClient( 'mongodb://admin:admin@whisky:27017/admin' );
var_dump( $m->getConnections()[0]['hash'] );
?>

输出:

string(64)
“whisky:27017;-;admin/admin/bda5cc70cd5c23f7ffa1fda978ecb class=”wp_keywordlink”>D30;8697″

从前示例中的”X”部分已经替换为八个含有数据库名admin、顾客名admin和哈希值bda5cc70cd5c23f7ffa1fda978ecbd30,该哈希值是依附客商名、数据库名和密码哈希值总计得来。

为了验证能够科学专业,需求在一而再一而再再而三字符串中隐含数据库名,不然会暗中认可为admin。

在成立连接后要利用数据库,须要先选取该数据库,如:

$collection = $m->demoDb->collection; $collection->findOne();

万一接收的数据库是三番一回字符串中钦赐的数据库,可能三番五次字符串中的数据库是admin,那么全数都会平时运行。不然,驱动会创造三个新的连续几日,进而防卫验证被绕过,如下所示:

<?php
$m = new MongoClient( 'mongodb://user:user@whisky:27017/test' );

$db = $m->test2;
$collection = $db->collection;
var_dump( $collection->findOne() );
?>

输出:

Fatal error: Uncaught exception ‘MongoCursorException’ with message
‘whisky:27017: unauthorized db:test2 ns:test2.collection lock type:0
client:127.0.0.1′ in …/mongo-connect-5.php.txt:6

因为我们的连天并未有施行test2数据库的授权验证,因此战败。若是大家实行验证,就能够健康运作:

<?php
$m = new MongoClient( 'mongodb://user:user@whisky:27017/test' );

$db = $m->test2;
$db->authenticate('user2', 'user2' );
$collection = $db->collection;
$collection->findOne();

foreach ( $m->getConnections() as $c )
{
    echo $c['hash'], "\n";
}
?>

输出:

whisky:27017;-;test/user/602b672e2fdcda7b58a042aeeb034376;26983
whisky:27017;-;test2/user2/984b6b4fd6c33f49b73f026f8b47c0de;26983

这几天微处理机中有多个已表明的连接:

威尼斯城所有登入网址 3

附带提一句,假设您张开了E_DEPRECATED级其他错误提示,则寻访到:

Deprecated: Function MongoDB::authenticate() is deprecated in
…/mongo-connect-6.php.txt on line 5

使得建议通过创立多少个MongoClient对象落成该类职责:

<?php
$mTest1 = new MongoClient( 'mongodb://user:user@whisky:27017/test', array( 'connect' => false ) );
$mTest2 = new MongoClient( 'mongodb://user2:user2@whisky:27017/test2', array( 'connect' => false ) );

$mTest1->test->test->findOne();
$mTest2->test2->test->findOne();

foreach ( $mTest2->getConnections() as $c )
{
    echo $c['hash'], "\n";
}
?>

单个MongoDB服务器能支撑的现身连接一定有限,假若应用PHP-FPM的话,每一种worker进度有本人独立的连接池,那么非常轻松完毕连接数的上限。因而,在生育条件中,不管有未有使用复制集,都要配备mongos,然后PHP-FPM连接mongos,那样可以减小mongod的连接数,何况PHP-FPM和mongos之间能够利用短连接(即各类必要结束时都显式调用close函数关闭MongoDB连接卡塔尔(قطر‎。

到官方网站下载和PHP版本、VC版本和线程安全相相配的包,解压后,将php_mongo.dll移动到extension_dir目录。

2、既然要输入顾客名和密码来进展授权,那么那一个客户名和密码是何等来的啊?
  
私下认可境况下,数据库中是从未有过顾客名和密码的,所以就算在拉开服务时展开了权力决定,也是无需其余顾客名和密码就足以访谈每种数据库。那也是必得的,因为我们要给数据库设置密码就一定要要先能够访问数据库,那个时候就可以对咱们的最佳助理馆员某数据库管理员安装客户名和密码。

3.mongo.config用记事本或其余编写制定软件展开,加入两行内容:

即使开发银行了应用服务器(Apache、WAMPP等),须要重启,后一次运行PHP时会自动加载Mongo扩张。

3、一流管理员和某数据库的领队
  
一流管理员正是在admin数据库中增多的顾客名和密码(能够查阅数据库列表什么的….)
   某数据库助理馆员也正是对各类数据库加多客户名和密码

dbpath =D:\mongoDB\mongo\data\db

  1. PHP驱动程序的简短示例

4、先导施行那么一下

logpath =d:\mongoDB\mongo\data\log\mongo.log

Mongo类便是二个到数据库的总是。私下认可意况下,布局器尝试连接本地暗中认可端口处运营的数据库服务器。MongoDB中的文档用PHP中的关联数组表示,{“foo”
: “bar”}对应PHP中的array(“foo” =>
“bar”卡塔尔(قطر‎。MongoDB中的数组对应表示为PHP中的数组,[“foo”, “bar”,
“baz”]对此PHP中的array(“foo”, “bar”,
“baz”卡塔尔。对于null、布尔型、数字型、字符串和数组,PHP驱动使用了PHP的本机类型。对于此外项目,可参照手册。

  1. 敞开服务(启用权限决定卡塔尔国
    mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log -auth
    威尼斯城所有登入网址 4
  2. 暗中同意未有用户名和密码的气象下是足以访问任性数据库的
    威尼斯城所有登入网址 5
  3. 在这里此情形下,成立三个特级管理员
    输入:use admin
    输入:db.addUser(‘sa’,’123′)
    然后再拜候admin数据库试试,就相会世谬误提示,那是正是因为必要客商授权,当输入顾客名和密码来授权之后,就OK
    威尼斯城所有登入网址 6
  4. 那个时候按Ctrl+C退出,然后再进来,用刚刚开立的顾客去访问admin以外的数据库,比如:test
    用admin创建的精品管理员不可能直接访问别的数据库,不过能够直接的去拜谒。
    威尼斯城所有登入网址 7
  5. 应用顶级管理员直接的去探访任意数据库,直接的去做客正是先经过授权步向admin数据库,然后再由admin数据库步向其余数据库
    即:以admin数据库为跳板,再进入别的数据库
    威尼斯城所有登入网址 8
  6. 为数据库加多顾客名和密码,每一个数据库都能够拉长直接待上访谈此库的顾客和密码,何况是存放在在本库的system.users表中的
    为test数据库制造直接待上访谈客商:客商名=test     密码=123
    威尼斯城所有登入网址 9
  7. 连绵起伏第6步,按Ctrl+C退出,再次进入test数据库,并输入第6步中为test数据库成立的第一手访谈客户和密码来举行授权
    威尼斯城所有登入网址 10

    水到渠成….
    此刻有未有对数据库的权限难点有了些掌握呢?

4.装置mongodb,使用管理员身份展开DOS界面,cd到mongo安装目录的bin文件夹下。

示例1:

 5、多少个轻易的服务安装、服务卸载以至客户登入实例

运营命令:mongod –config d:\mongodb\mongo\mongo.config
–install(安装成windows服务)

赢得数据库test的users集合,不用忧郁users集结是不是存在,若不真实该集结,程序会在数据库中自行创制。如下:

  1. 安装:mongod -dbpath=D:/MongoDB/Data
  2. 安装:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log
  3. 安装:mongod -dbpath=D:/MonogDB/Data
    -logpath=D:/MongoDB/Log/test.log -logappend
  4. 安装:mongod -dbpath=D:/MonogDB/Data
    -logpath=D:/MongoDB/Log/test.log -logappend -fork
    卸载:db.shutdownServer()
    上述的cmd中的shell连接:mongo 可能mongo admin(钦赐的数据库名称卡塔尔国
                          C#连接:mongodb://localhost
  5. 安装:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log  port 2222 -install
    开启:net start MongoDB
    关闭:net stop MongoDB
    卸载:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log  port 2222 -remove
    命令连接:mongo 127.0.0.1:2222或mongo
    127.0.0.1:2222/admin(即:数据库名称卡塔尔
     c#连接:mongodb://127.0.0.1:2222或Server=127.0.0.1:2222
  6. 安装:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log  port 2222  -auth -install
    与5类似
    命令连接:
     
    c#连接:mongodb://客商名:密码@localhost:2222   登入后将暗中同意使用admin数据库
              mongodb://顾客名:密码@localhost:2222/admin(即:数据库名称卡塔尔国

 

id=”articlecontent”>以下列出的uri样式并非被所有的数据库驱动所支持,请参考各驱动自己的文档,查看各驱动支持的连接字符串uri形式。如果下面的样式不支持,那么驱动会有自己的指定连接的替代方式。

id=”articlecontent”>mongodb:``//[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

id=”articlecontent”>mongodb:``// 是一个必填的前缀,它标识当前字符串是标准连接格式。
id=”articlecontent”>{{username:password@}}可选。给出用户名和密码后,驱动将在连接到数据库后尝试登录。host1 uri里唯一的必填项,数据库的连接地址。
:portX 可选。默认连接到27017端口。
id=”articlecontent”>/database 是希望连接到的数据库名,只有在提供 username:password@ 后该值才有效。如果不指定,默认将连接``"admin"``数据库。 id=”articlecontent”>可以任意指定多个数据库和端口,这用于实现连接到replica pairs/sets。可选项options有:
  connect=direct|replicaset
   id=”articlecontent”>direct: 直接建立一个到服务器的连接。如果指定了多个host,将按先后顺序挨个尝试建立连接,直到连接建立成功为止。如果只指定了一个host,则 direct 为默认值。
   id=”articlecontent”>replicaset: 使用creplica ``set semantics建立连接(即使只提供了一个host)。指定的host作为种子列表来查找完整的replica``set``。当指定多个host时 replicaset 为默认值。
  replicaset=name
   id=”articlecontent”>驱动验证建立连接的replica ``set``的名字。隐含 connect=replicaset。
   id=”articlecontent”>slaveok=``true``|``falseo     ``true``: 对于 connect=direct 模式,驱动对列表中的第一个服务器建立连接,即使它不是主服务器。对 connect=replicaset 模式,驱动将所有写操作发送到主节点,将所有读操作按round robin顺序分发到从节点。
   id=”articlecontent”>false``: 对 connect=direct 模式,驱动按顺序尝试所有host直到找到主节点。对 connect=replicaset 模式,驱动将只连接到主节点,并将所有读操作和写操作都发送到主节点。 id=”articlecontent”>safe=``true``|``false
  true: 驱动在每一趟换代操作后都发送 getlasterror
命令以保证更新成功(参考 w 和 wtimeout)。
  false: 驱动每一回换代操作后不发送 getlasterror 命令。

   w=no   
  驱动给 getlasterror 发送 { w : n } 命令。隐含 safe=true。

   wtimeout=ms
  驱动给 getlasterror 添加 { wtimeout : ms } 参数。隐含
safe=true。

  fsync=true|false
  true: 驱动给 getlasterror 添加 { fsync : true } 参数。隐含
safe=true。
  false: 驱动不增加 fsync 参数。

 

连接示例

连接到一个运行在本机默认端口(27017)的MongoDB
mongodb://localhost
连接到一个运行在本机默认端口(27017)的MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将默认使用admin数据库
mongodb://fred:foobar@localhost
连接到一个运行在本机默认端口(27017)的MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将使用baz数据库
mongodb://fred:foobar@localhost/baz
连接到一个replica pair,一台服务器在example1.com,另一台在example2.com
mongodb://example1.com:27017,example2.com:27017
连接到本机的一个replica set(端口分别为27017,27018,27019)
mongodb://localhost,localhost:27018,localhost:27019
连接到三台服务器的replica set,将所有写操作发送到主节点,所有读操作分发到从节点
mongodb://host1,host2,host3/?slaveok=true
连接到第一台服务器并响应,无论它是replica set的一台,也无论它是主节点还是从节点
mongodb://host1,host2,host3/?connect=direct;slaveok=true
注:这种类型的连接字符串可用于在你偏好使用某台服务器但有可供替换的服务器的时候。
使用safe模式连接到本机
mongodb://localhost/?safe=true
使用safe模式连接到replica set,等待备份在至少两台机器上完成,timeout时间为2秒
mongodb://host1,host2,host3/?safe=true;w=2;wtimeout=2000

 

那边顺便说下移除服务的指令: mongod –remove –serviceName “MongoDB”

1 <?php  2   3          $connection = new Mongo();  4   5          $collection = $connection->test->users;  6   7 ?>

5.运维服务,张开一个dos服务,输入指令:net start MongoDB

本来还可以世襲访谈子集结,举例获取users.addresses集合:

附带说一下停下服务的吩咐:net stop MongoDB

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图