MongoDB, пример веб-приложения: различия между версиями
Перейти к навигации
Перейти к поиску
Admin (обсуждение | вклад) |
(нет различий)
|
Текущая версия на 18:19, 1 июля 2022
Установка модуля mongodb для PHP
Операционная система: Oracle Linux 8.6 Веб-сервер: nginx + php-fpm База данных: mongodb 5.0.8
su root dnf install make dnf install php-devel dnf install php-pear dnf install php-json # если нет прямого подключения к интернету, то подключаем через прокси export http_proxy=http://proxy:3128 export https_proxy=http://proxy:3128 # установка php драйвера для mongodb pecl install mongodb # проверка, что файл mongodb.so создан ls -lh /usr/lib64/php/modules # корректируем, как у остальных модулей chmod +x /usr/lib64/php/modules/mongodb.so # создаем файл для включения модуля echo 'extension=mongodb' | tee /etc/php.d/30-mongodb.ini # разрешаем сетевое подключение к базе данных для веб-сервера setsebool -P httpd_can_network_connect on systemctl restart php-fpm systemctl restart nginx # проверяем нет ли ошибки загрузки модуля cat /var/log/messages | grep mongodb # проверяем в phpinfo наличие модуля mongodb echo '<?php phpinfo() ?>' | tee /var/www/<myhost>/phpinfo.php http://<myhost>/phpinfo.php
Создание и наполнение базы test
mongo
use test
db.items.insert({ name: 'eggs', quantity: 10, price: 1.50 })
db.items.insert({ name: 'bacon', quantity: 3, price: 3.50, saled: '1.07.2022' })
db.items.insert({ name: 'tomatoes', quantity: 30, price: 0.50 })
quit()
Веб-приложение
<?php
// включение отображения ошибок
error_reporting(-1);
ini_set('display_errors', 'On');
// проверка модуля
echo extension_loaded("mongodb") ? "loaded<br/>" : "not loaded<br/>";
// подключение к mongodb
echo '<hr>';
$manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");
var_dump($manager) . '<br/>';
echo '<hr>';
$filter = array();
$options = array();
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('test.items', $query);
$result = $cursor -> toArray();
foreach ($result as $obj){
echo $obj->name . ', ' . $obj->quantity . ', ' . $obj->price;
// метим звездочкой, если запись содержит атрибут saled
if ( property_exists($obj,'saled') ) {
echo ' * ';
}
echo '<br/>';
}
echo '<hr>';
// quantity < 20
$filter = array("quantity" => array('$lt' => 20));
$options = array();
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('test.items', $query);
$iterator = new IteratorIterator($cursor);
$iterator->rewind();
while($doc = $iterator->current()) {
echo $doc->name . ', ' . $doc->quantity . '<br/>';
$iterator->next();
}
?>