اتصال به دیتابیس MongoDB در برنامه‌های PHP


برای اتصال به دیتابیس MongoDB می‌توانید از اکستنشن نصب شده آن استفاده کنید. اما طبق نسخه آخرین اکستنشن نصب شده، فقط امکان استفاده از ورژن "1.15" پکیج "mongodb/mongodb"و یا نسخه‌های پایین‌تر را، خواهید داشت. در صورتی که قصد دارید از نسخه‌های جدیدتر این پکیج، استفاده کنید. بایستی از Hookها استفاده کنید.

در ابتدا، بایستی تا طبق مستندات تنظیم متغیرهای محیطی، متغیرهای مربوط به دیتابیس MongoDB را به برنامه خود، اضافه کنید. به عنوان مثال:

کپی
MONGODB_URI=mongodb://root:JtFcUbOxnQunBSnEzu1PNf5Z@annapurna.liara.cloud:30725/my-app?authSource=admin

استفاده از نسخه‌های جدید MongoDB برای اتصال

برای استفاده از جدیدترین کتابخانه MongoDB، کافیست تا در مسیر اصلی پروژه، یک فایل به نام liara_pre_build.sh ایجاد کنید و قطعه کد زیر را درون آن، قرار دهید:

کپی
apt-get update;
apt-get install php8.2-dev  -y --allow-unauthenticated;
sudo pecl install mongodb;
printf "; priority=20\nextension=mongodb.so\n" > /etc/php/8.2/mods-available/mongodb.ini;
phpenmod -v 8.2 mongodb;
composer require mongodb/mongodb;

اگر که از نسخه PHP غیر از 8.2 استفاده می‌کنید؛ می‌توانید در قطعه کد بالا به جای تمامی عبارات 8.2، ورژن مورد نظر خود را وارد کنید.

سپس، می‌توانید با استفاده از قطعه کد زیر، به دیتابیس متصل شده و از آن استفاده کنید:

کپی
<?php

require_once __DIR__ . '/vendor/autoload.php';

use Exception;
use MongoDB\Client;

$uri = getenv('MONGODB_URI');

$client = new \MongoDB\Client($uri);

try {
    $client->selectDatabase('admin')->command(['ping' => 1]);
    echo "Pinged your deployment. You successfully connected to MongoDB!\n";
} catch (Exception $e) {
    printf($e->getMessage());
}

در نهایت، کافیست تا برنامه خود را در لیارا مستقر کنید. با استقرار برنامه، اکستنشن به آخرین نسخه خود، به روز می‌شود و در نهایت پکیج مورد نیاز mongodb نیز با استفاده از composer، برای‌تان نصب می‌شود و نیازی نیست که شما، کار خاصی را انجام دهید.

استفاده از نسخه‌های قدیمی MongoDB برای اتصال

در مسیر اصلی پروژه، کافیست تا یک فایل به نام composer.json ایجاد کنید و اگر که از قبل این فایل وجود دارد، بایستی قطعه کد زیر را به آن، اضافه کنید:

کپی
{
    "require": {
        "mongodb/mongodb": "1.15"
    }
}

تمامی کارها انجام شده است و می‌توانید با استفاده از قطعه کد زیر، به دیتابیس خود متصل شوید:

کپی
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Exception;
use MongoDBClient;

$uri = getenv('MONGODB_URI');

try {
    $client = new MongoDBClient($uri, [], $options);
    $client->selectDatabase('admin')->command(['ping' => 1]);
    echo "Pinged your deployment. You successfully connected to MongoDB!
";
} catch (Exception $e) {
    printf($e->getMessage());
}
?>

استفاده از Connection Pooling

مفهوم Connection pooling به معنای استفاده از یک مجموعه اتصالات از پیش ساخته شده برای اتصال به پایگاه داده است. این تکنیک باعث می‌شود به جای ایجاد و بستن مکرر اتصالات، از اتصالات موجود در مجموعه استفاده شود که کارایی را افزایش می‌دهد.

برای استفاده از قابلیت connection pooling در دیتابیس MongoDB، می‌توانید از قطعه کد زیر استفاده کنید و پارامترهای آن را با توجه به نیاز خود، تغییر دهید:

کپی
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Exception;
use MongoDBClient;

$uri = getenv('MONGODB_URI');

$options = [
    'connectTimeoutMS' => 5000, 
    'socketTimeoutMS' => 60000, 
    'maxIdleTimeMS' => 300000, 
    'maxPoolSize' => 50, 
    'minPoolSize' => 5,
];

try {
    $client = new MongoDBClient($uri, [], $options);
    $client->selectDatabase('admin')->command(['ping' => 1]);
    echo "Pinged your deployment. You successfully connected to MongoDB!
";
} catch (Exception $e) {
    printf($e->getMessage());
}
?>