Подключение к базе данных mongodb в PHP - PullRequest
0 голосов
/ 26 июня 2018

Подключение к атласу mongodb и попытка написать простой документ приводит к следующей ошибке. Что я делаю не так?

$manager = new MongoDB\Driver\Manager("mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/db?ssl=false&replicaSet=test-shard-0&authSource=admin&serverSelectionTryOnce=false");

var_dump($manager);

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->insert(['x' => 1]);
$manager->executeBulkWrite('db.collection', $bulk);

Фатальная ошибка: Uncaught MongoDB \ Driver \ Exception \ ConnectionTimeoutException: не подходит серверы найдены: serverselectiontimeoutms timed out: [соединение закрыто вызов ismaster на 'test-shard-00-00-waf4c.mongodb.net:27017'] в /Applications/AMPPS/www/mongodb/liveserver.php:63

Когда я var_dump $ manager, я получаю:

объект (MongoDB \ Driver \ Manager) # 1 (2) {["uri"] => строка (64) "admin: admin@test-shard-00-00-rbgc.mongodb.net: 27017 /" ["cluster"] => массив (0) {}}

1 Ответ

0 голосов
/ 27 июня 2018

Я использую php версии 7.0 в Ubuntu 16.04. Это подробное решение. Пропустите те части, которые вы успешно выполнили. Сначала я вручную установил mongodb, а затем драйвер mongodb-php.

1) Установка монго дб. Введите следующие команды:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ sudo apt-get update

$ sudo apt-get install -y mongodb-org

Чтобы правильно запустить Mongdb как службу, то есть автоматически запустить Mongodb при запуске системы, выполните следующие действия:

Создайте файл mongodb.service в / etc / systemd / system /, введя команду:

$ sudo nano /etc/systemd/system/mongodb.service

Вставьте в него следующее содержимое:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

Затем введите следующие команды:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Установка драйвера mongo-php:

$ sudo pecl install mongodb

Также вы можете получить сообщение об ошибке: phpize not found. Phpize - это команда, которая используется для создания среды сборки. Эта ошибка может появиться во время установки любого расширения pecl. Чтобы решить эту проблему, команда phpize не найдена, пользователь должен установить пакет php5-dev. Для его установки введите команду:

 $ sudo apt-get install php7.0-dev

Затем в файле php.ini, который находится в каталоге /etc/php/7.0/apache2, добавьте расширение dong mongo:

$ sudo nano /etc/php/7.0/apache2/php.ini 

Добавьте следующую строку в файл:

extension = mongodb.so;

(Точно так же, как вы знаете, точное местоположение файла mongodb.so находится в /usr/lib/php/20151012/mongodb.so.)

.

Итак, dong монго установлен вместе с его драйвером.

3) Имейте в виду, что классы mongo-php были изменены. Большинство доступных ресурсов в сети дают решения, использующие старые классы, которые заменяются. Ниже приведены ссылки, на которые вы можете сослаться:

http://php.net/manual/en/set.mongodb.php

http://zetcode.com/db/mongodbphp/

Вот несколько команд для основных операций с базой данных:

$mng = new MongoDB\Driver\Manager(); // Driver Object created

Чтобы вставить данные в базу данных:

$bulk = new MongoDB\Driver\BulkWrite;

$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);

Для получения данных:

$query = new MongoDB\Driver\Query([]); 

$rows = $mng->executeQuery("dbName.collectionName", $query);

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...