标签: mongodb-php

处理没有ACID数据库的会话?

我正在考虑使用与memcached配对的noSQL(mongoDB)来存储我的webapp中的会话.我们的想法是,在每次页面加载时,将用户数据与memcache中的数据进行比较,如果某些内容发生了变化,数据将被写入memcached和mySQL.通过这种方式,读取将大大减少,并使用memcached来完成它最擅长的操作.

但是我有点担心使用非ACID数据库进行会话存储,尤其是使用memcached层.让我们说在将数据库更新到数据库时会出现问题,我们的用户很快就会想知道为什么他们放入购物车的产品没有出现......

什么是合适的方法?我们应该使用mySQL会话存储还是保留非酸性支持数据库用于会话?

谢谢!

php mysql session nosql mongodb-php

6
推荐指数
1
解决办法
1218
查看次数

MongoCursorException'无法获取响应头'

我正在使用PHP和mongodb开发一个网站.我用PECL-mongo访问mongodb ,并且遇到了烦恼.我时不时地得到这样的错误(我已经对这些路径进行了匿名)

Fatal error: Uncaught exception 'MongoCursorException' with message 'couldn't get response header' in
    /PATH/index.php:38 Stack trace: #0 
    /PATH/index.php(38): MongoCursor->rewind() #1 
    /PATH/template.inc(29): get_sidebar() #2 
    /PATH/index.php(13): 
    require_once('PATH/...') #3 {main} thrown in PATH/index.php on line 38
Run Code Online (Sandbox Code Playgroud)

根据文档,这意味着:

驱动程序无法从数据库中获取回复标头,因此它放弃了.检查数据库是否仍在运行并且网络已连接,然后再次尝试查询.

但我知道数据库已启动,因为我在我自己的机器上本地执行环回.没有与外界联系.

再试一次经常有效.这可能是PHP的mongo驱动程序中的一个错误吗?这可能是一个"错误编译"的问题(我从源代码编译,但有非常良性的标志,-march=native -O2)?

谁看过这个吗?

搜索周围,我只看到一些愚蠢的Facebook游戏的引用有相同的错误.

编辑:我刚刚将我的PECL驱动程序降级到1.1.4版本,到目前为止,问题似乎已经消失.所以这可能只是1.2.x系列中的一个错误.如果有人能够对它有所了解,那就太好了.

编辑:我在这里没有做任何复杂的事情,有问题的代码看起来像这样:

$m = new Mongo();
$collection = $m->my_db->collection;
$results = $collection->find(array("favorite"=>true))->limit(5);
Run Code Online (Sandbox Code Playgroud)

php mongodb mongodb-php

6
推荐指数
1
解决办法
1661
查看次数

PHP Mongo:注意:Mongo :: __ construct():解析服务器

我想知道为什么我得到以下php通知:

( ! ) Notice: Mongo::__construct(): parsing servers in C:\htdocs\multishop\library\Lupi\Resource\Odm.php on line 38
Call Stack
#   Time    Memory  Function    Location
1   0.0004  138504  {main}( )   ..\index.php:0
2   0.0130  667392  Zend_Application->bootstrap( )  ..\index.php:25
3   0.0130  667488  Zend_Application_Bootstrap_BootstrapAbstract->bootstrap( )  ..\Application.php:355
4   0.0130  667504  Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap( ) ..\BootstrapAbstract.php:586
5   0.0442  2068704 Zend_Application_Bootstrap_BootstrapAbstract->_executeResource( )   ..\BootstrapAbstract.php:626
6   0.0442  2068832 Lupi_Resource_Odm->init( )  ..\BootstrapAbstract.php:683
7   0.0596  2778880 Mongo->__construct( )   ..\Odm.php:38
Run Code Online (Sandbox Code Playgroud)

第38行:

 $dm = DocumentManager::create(new \Doctrine\MongoDB\Connection(new \Mongo), $config);
Run Code Online (Sandbox Code Playgroud)

通知有时会出现,而不是所有时间.我正在使用doctrine mongo ODM.

php doctrine mongodb-php doctrine-odm

6
推荐指数
1
解决办法
362
查看次数

是否有用于codeigniter的mongodb支持的用户身份验证库?

我需要一个Codeigniter登录库来进行用户身份验证.我使用MongoDB作为我的数据库.

我已经浏览了一些推荐的库,如Ion Auth,Tank Auth,DX Auth等,但都使用了mysql数据库.

是否有推荐的库使用mongodb作为数据库?

我开始将上面的一个库从mysql转换为mongodb insetions但它变得太复杂了 - 需要进行许多更改,并认为我最终会弄乱它.使用mongodb在一个好的图书馆需要帮助.

php codeigniter mongodb mongodb-php codeigniter-2

5
推荐指数
1
解决办法
1525
查看次数

PHP MongoDB使用$ in/$或更新多个文档

我无法弄清楚如何在PHP中构建更新查询,以更新文档ID X,Y和Z.有没有人有这方面的经验?

$ids[] = array(
  new MongoId('4eaaf929498fe2c80300000c'),
  new MongoId('4eaaff24498fe2ba0900001f')
); 
$collection->update(
  array('_id' => array('$in' => $ids)),
  array('$set' => array("title"=>"test")),
  array("upsert" => true)
);
Run Code Online (Sandbox Code Playgroud)

php mongodb mongodb-php

5
推荐指数
1
解决办法
5307
查看次数

与MongoDB的连接未关闭时会发生什么?

我有以下PHP脚本基本上连接到MongoDB,写入文档,然后关闭连接19000次:

<?php
for($i=0; $i < 19000; $i++) {
    $con = new Mongo("mongodb://localhost:27017");
    $db = $con->selectDB('test');

    $col = $db->selectCollection('close_wait_test');
    $col->insert(array('Test' => 'Value1'));

    $con->close();
}
?>
Run Code Online (Sandbox Code Playgroud)

运行此脚本一次运行正常,但如果我在几秒钟后运行脚本,我会得到"无法分配请求的地址"异常,这是可以理解的,因为服务器系统可能用完了端口.

但是,如果我删除$ con> close(); 我可以一遍又一遍地运行该脚本,而不会对数据库造成任何明显的压力.我假设这是因为连接到数据库是持久的并且在脚本上重用相同的初始连接.

我想知道的是,如果20K +不同用户运行1圈这个脚本的同时,会发生什么样的数据库?例如,可用连接是否会耗尽,因为每个用户需要创建一个到数据库的连接?或者所有这些用户都使用第一个用户创建的相同初始连接?

php mongodb mongodb-php

5
推荐指数
1
解决办法
4300
查看次数

MongoDB如果尚不存在,则将字段插入现有文档

我有这样的文件(这是非常简化的):

{
    'name' : 'test',
    'age' : 16
}
Run Code Online (Sandbox Code Playgroud)

还有这个

{
    'name' : 'test2'
}
Run Code Online (Sandbox Code Playgroud)

如果不存在,我想将所有'年龄'设置为14.

我怎样才能做到这一点?

mongodb mongodb-php

5
推荐指数
1
解决办法
4058
查看次数

mongodb聚合框架由两个字段组成

我使用聚合和管道查询我的数据库,有两个单独的查询:

 $groups_q = array(
            '$group' => array(
                '_id' => '$group_name',
                'total_sum' => array('$sum' => 1)
                )
            );

  $statuses_q = array(
            '$group' => array(
                '_id' => '$user_status',
                'total_sum' => array('$sum' => 1)
                )
            );

$data['statuses'] = $this->mongo_db->aggregate('users',$statuses_q);
$data['groups'] = $this->mongo_db->aggregate('users',$groups_q);
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的东西:

Array
(
[statuses] => Array
    (
        [result] => Array
            (
                [0] => Array
                    (
                        [_id] => Inactive
                        [total_sum] => 2
                    )

                [1] => Array
                    (
                        [_id] => Active
                        [total_sum] => 5
                    )

            )

        [ok] => 1
    )

[groups] => Array …
Run Code Online (Sandbox Code Playgroud)

php codeigniter mongodb mongodb-php mongodb-query

5
推荐指数
1
解决办法
8100
查看次数

RockMongo致命错误

我在这个网站上安装了我的ubuntu中的rockmongo .当我试图从浏览器打开rockmongo时,它显示出致命的错误,如下所述.

错误:

Fatal error: ini_set(): To prevent data corruption, you are not allowed to turn on the mongo.native_long setting on 32-bit platforms in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题,任何人都可以为我解决这个问题.

php mongodb mongodb-php

5
推荐指数
1
解决办法
5027
查看次数

如何在codeigniter中集成mongodb库,以便与mongodb进行数据库连接

我正在使用codeigniter和mongodb数据库创建应用程序.由于codeigniter不包含mongodbs驱动程序,我使用内置库连接mongodb.我用这个链接创建了mongodb configration文件和Mongo_db库.配置文件就像application\config\mongodb:

<?php
$config['default']['mongo_hostbase'] = 'localhost:27017';
$config['default']['mongo_database'] = 'test';
$config['default']['mongo_username'] = '';
$config['default']['mongo_password'] = '';
$config['default']['mongo_persist']  = FALSE;
$config['default']['mongo_persist_key']  = 'ci_persist';
$config['default']['mongo_replica_set']  = FALSE;
$config['default']['mongo_query_safety'] = 'safe';
$config['default']['mongo_suppress_connect_error'] = FALSE;
$config['default']['mongo_host_db_flag']   = FALSE; 

?> 
Run Code Online (Sandbox Code Playgroud)

和Mongo_db库是这样的:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Mongo_db
{
  public function __construct()
    {

                //Check mongodb is installed in your server otherwise display an error
        if ( ! class_exists('Mongo'))
        {
            $this->_show_error('The MongoDB PECL extension has not been installed or enabled', …
Run Code Online (Sandbox Code Playgroud)

codeigniter mongodb-php

5
推荐指数
1
解决办法
9635
查看次数