php

پلتفرم PHP

(PHP Platform)

اتصال به دیتابیس‌ها

فهرست عناوین:

MySQL/MariaDB

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

روش‌ها و کتابخانه‌های مختلفی برای اتصال به MySQL یا MariaDB در PHP وجود دارد. برای در ادامه، ما از mysqli استفاده می‌کنیم. در ابتدا، باید متغیرهای محیطی زیر را به برنامه خود اضافه کنید، در نظر داشته باشید که مقادیر متغیرهای زیر فرعی هستند و شما باید آن‌ها را با مقادیر اصلی دیتابیس خود، جایگزین کنید:

DB_HOST=annapurna.liara.cloud
DB_PORT=34663
DB_DATABASE=dreamy_zhukovsky
DB_USERNAME=root
DB_PASSWORD=Umtdo7rWEoEMyWth4nS1sf4t

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

<?php
$servername = getenv('DB_HOST');
$port = getenv('DB_PORT'); 
$username = getenv('DB_USERNAME'); 
$password = getenv('DB_PASSWORD'); 
$database = getenv('DB_DATABASE'); 

$conn = new mysqli($servername, $username, $password, $database, $port);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo "Connected";}

$conn->close();
?> 

PostgreSQL

در ابتدا کافیست تا متغیرمحیطی زیر را به برنامه خود اضافه کنید؛ در نظر داشته باشید که مقدار متغیر زیر، فرضی است:

PG_URI=postgresql://root:2aCRtMfc2oMou67U2GftmLmd@annapurna.liara.cloud:32655/postgres

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

<?php
$uri = getenv("PG_URI");

try {
    $uriParts = parse_url($uri);

    $host = $uriParts['host'];
    $port = $uriParts['port'];
    $user = $uriParts['user'];
    $pass = $uriParts['pass'];
    $dbname = ltrim($uriParts['path'], '/');

    $pdo = new PDO("pgsql:host=$host;port=$port;dbname=$dbname;user=$user;password=$pass");

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Connected to PostgreSQL database successfully!";
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();}
?>

MongoDB

برای استفاده از این دیتابیس، در ابتدا باید در Local با استفاده از دستور زیر، پکیج mongodb را بر روی پروژه خود نصب کنید:

composer require mongodb/mongodb:^1.15 --ignore-platform-reqs

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

{
    "require": {
        "mongodb/mongodb": "1.15"
    }
}

در ادامه، می‌توانید متغیر محیطی زیر را در برنامه خود، تعریف کنید؛ در نظر داشته باشید که مقدار متغیر زیر، فرضی است:

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

و در نهایت، با استفاده از قطعه کد زیر، می‌توانید به دیتابیس 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());
}
?>

Redis

برای اتصال به Redis، در ابتدا کافیست تا متغیرهای محیطی زیر را به برنامه خود، اضافه کنید. در نظر داشته باشید که مقادیر متغیرهای زیر، فرضی هستند و باید آن‌ها را با اطلاعات واقعی دیتابیس خود، جایگزین کنید:

REDIS_HOST=annapurna.liara.cloud
REDIS_PORT=34728
REDIS_PASS=aLsc5QKG7z4ubKeLSLBwx9ob

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

<?php

$redis = new Redis();

$redis->connect(getenv('REDIS_HOST'), getenv('REDIS_PORT'));
$redis->auth(getenv('REDIS_PASS'));

if ($redis->ping()) {
 echo "PONG";
}

?>

SQLite

برای اتصال اصولی به دیتابیس SQLite در برنامه PHP خود، کافیست تا مراحل زیر را دنبال کنید:

  • مرحله اول) در مسیر اصلی پروژه، یک دایرکتوری به نام dbconfig بسازید.
  • مرحله دوم) در مسیر اصلی پروژه، یک فایل به نام composer.json ایجاد کنید و محتوای زیر را درونش قرار دهید:
  • {
        "autoload": {
            "psr-4": {
                "myDB\\": "dbconfig/"
            }
        }
    }
  • مرحله سوم) در مسیر اصلی پروژه، یک دایرکتوری دیگر به نام db ایجاد کنید.
  • مرحله چهارم) درون دایرکتوری dbconfig یک فایل به نام Config.php ایجاد کنید و قطعه کد زیر را در آن قرار دهید:
  • <?php
    
    namespace myDB;
    
    class Config {
       
        const PATH_TO_SQLITE_FILE = 'db/phpsqlite.db';
    }
  • مرحله پنجم) مجدداً، درون دایرکتوری dbconfig یک فایل دیگر به نام SQLiteConnection.php ایجاد کنید و محتوای زیر را درون آن قرار دهید:
  • <?php
    namespace myDB;
    
    class SQLiteConnection {
    
        private $pdo;
    
        public function connect() {
            if ($this->pdo == null) {
                $this->pdo = new \PDO("sqlite:" . Config::PATH_TO_SQLITE_FILE);
            }
            return $this->pdo;
        }
    }
  • مرحله ششم) سپس، در مسیر اصلی پروژه، یک فایل به نام index.php ایجاد کنید و یا اگر از قبل وجود دارد، فقط کافیست تا قطعه کد زیر را درون آن قرار دهید:
  • <?php
    
    require 'vendor/autoload.php';
    
    use myDB\SQLiteConnection;
    
    $pdo = (new SQLiteConnection())->connect();
    if ($pdo != null)
        echo 'Connected to the SQLite database successfully!';
    else
        echo 'Could not connect to the SQLite database!';
  • مرحله هفتم) باید در برنامه PHP خود در لیارا، وارد بخش دیسک‌ها شوید و یک دیسک جدید به نام database با اندازه مدنظرتان، ایجاد کنید.
  • مرحله هشتم و پایانی) در نهایت، کافیست در مسیر اصلی پروژه، یک فایل به نام liara.json ایجاد کنید و قطعه کد زیر را درون آن، قرار دهید و سپس دستور liara deploy را اجرا کنید:
  • {
        "php": {
            "version": "8.2"
          },
        "disks": [
            {
                "name": "database",
                "mountTo": "/var/www/html/db"
            }
        ]
    }
در قطعه کدهای ارائه شده، قابلیت Connection Pooling نیز برای دیتابیس‌ها، فعال است. بنابراین نیازی به نوشتن قطعه کد خاصی نیست و می‌توانید از این قابلیت، استفاده کنید.

متوجه شدم، برو گام بعدی!
;