关于php:关于-PHP-启动-MongoDb-找不到指定模块问题

前言:

最近有一个小 demo,须要通过 PHP 将用户行为记录贮存到 MongoDB,再用 Spark 做协同过滤。因为以前解决跨语言交互是通过消息中间件,这次本地应用 MongoDB 却弄出了几个问题。首先是本地装置了扩大,启动时报找不到模块谬误,再个时 PHP 进行的实例化应用时报 MongoClient 和一些函数不存在。最初也举荐一些方便快捷的 MongoDB 图形化工具。 

环境:

  1. Windows10
  2. PHP7.4
  3. MongoDB 4.4.14 Server
  4. php_mongodb-1.12.1-7.4-nts-vc15-x64 

装置:

1. MongoDB Server 下载

2. php_mongodb-1.12.1-7.4-nts-vc15-x64 下载

3. navicat for mongodb 下载

问题:

  1. 找不到指定模块 php_mongodbPHP 中增加扩大 php_mongodb 不正确,除了须要 php_mongodb.dll 还要 php_mongodb.pdb 复制到 php 装置目录下的 ext 中

最初在 php.ini 增加 extension=php_mongodb.dll,重启完后查看 php -m 或者浏览器中查看 phpinfo ()

2. MongoClient 类不存在起因是这个是旧版本 php_mongo 扩大提供的类,新版本是通过前面演示代码的形式,如果不晓得扩大提供的新办法或函数能够通过一下形式查看。

(1). get_declared_classes () 查看扩大里预设的函数

工具应用:

  1. MongoDB Server

(1).启动服务

  1. Navicat for MongoDB

(1). 连贯服务

代码演示:

1. 查问

public function testMongoDbQuery()

{
    $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");

    $filter = ['x' => ['$gt' => 0]];
    $options = [
        'projection' => ['_id' => 0],
        'sort' => ['x' => -1],
    ];

    // 查问数据
    $query = new \MongoDB\Driver\Query($filter, $options);
    $cursor = $manager->executeQuery('test.sites', $query);

    foreach ($cursor as $document) {
        print_r($document);
    }
}2. 插入public function testMongoDbInsert()
{
    $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");

    $bulk = new \MongoDB\Driver\BulkWrite;
    // mongoDb默认存在一个自增长的字符串ID
    $document = [
        '_id' => new \MongoDB\BSON\ObjectID,
        'videoId' => mt_rand(1, 99999),
        'userId' => mt_rand(1, 9999),
        'score' => floatval(mt_rand(5,100)),
        'date' => time()
    ];
    $bulk->insert($document);
    $res = $manager->executeBulkWrite('tanhua.recommend_video_20191001', $bulk);

    return $res;
}3. 批量插入public function testMongoDbBulk()
{
    //return get_declared_classes();
    $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");

    $bulk = new \MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1, 'name'=>'tenent', 'url' => 'http://www.runoob.com']);
    $bulk->insert(['x' => 2, 'name'=>'Google', 'url' => 'http://www.google.com']);
    $bulk->insert(['x' => 3, 'name'=>'taobao', 'url' => 'http://www.taobao.com']);
    $res = $manager->executeBulkWrite('test.sites', $bulk);

    return $res;
} 

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据