关于 PHP 启动 MongoDb 找不到指定模块问题
2023/5/13 23:22:09
本文主要是介绍关于 PHP 启动 MongoDb 找不到指定模块问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言:
最近有一个小 demo,需要通过 PHP 将用户行为记录储存到 MongoDB,再用 Spark 做协同过滤。由于以前处理跨语言交互是通过消息中间件,这次本地使用 MongoDB 却弄出了几个问题。首先是本地安装了扩展,启动时报找不到模块错误,再个时 PHP 进行的实例化使用时报 MongoClient 和一些函数不存在。最后也推荐一些方便快捷的 MongoDB 图形化工具。
环境:
-
Windows10
-
PHP7.4
-
MongoDB 4.4.14 Server
-
php_mongodb-1.12.1-7.4-nts-vc15-x64
安装:
1. MongoDB Server 下载
- php_mongodb-1.12.1-7.4-nts-vc15-x64 下载
- navicat for mongodb 下载
问题:
- 找不到指定模块 php_mongodb
PHP 中添加扩展 php_mongodb 不正确,除了需要 php_mongodb.dll 还要 php_mongodb.pdb 复制到 php 安装目录下的 ext 中
最后在 php.ini 添加 extension=php_mongodb.dll,重启完后查看 php -m 或者浏览器中查看 phpinfo ()
- MongoClient 类不存在
原因是这个是旧版本 php_mongo 扩展提供的类,新版本是通过后面演示代码的方式,如果不知道扩展提供的新方法或函数可以通过一下方式查看。
(1). get_declared_classes () 查看扩展里预设的函数
工具使用:
- MongoDB Server
(1). 启动服务
- Navicat for MongoDB
(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); } }
- 插入
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; }
- 批量插入
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; }
这篇关于关于 PHP 启动 MongoDb 找不到指定模块问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享
- 2024-11-01开源 PHP 商城项目 CRMEB 安装和使用教程
- 2024-11-01用php和mysql写无限分类,有哪几种方法-icode9专业技术文章分享
- 2024-10-31php数据分表导出时部分数据无法导出什么原因-icode9专业技术文章分享
- 2024-10-30有经验的 PHP 开发者学习一门新的编程语言,有哪些推荐的有前景的语言-icode9专业技术文章分享
- 2024-10-21php 检测图片是否篡改过-icode9专业技术文章分享
- 2024-10-20fruitcake/php-cors 该怎么使用-icode9专业技术文章分享
- 2024-10-18PHP7.1可以使用哪个版本的swoole-icode9专业技术文章分享