डेटाबेस त्वरित मार्गदर्शक (Laravel डेटाबेस घटक पर आधारित)

webman/database illuminate/database पर आधारित है, और इसमें कनेक्शन पूल फ़ीचर जोड़ा गया है, जो सह-क्रम और गैर-सह-क्रम वातावरण का समर्थन करता है, उपयोग Laravel के समान है।

डेवलपर्स अन्य डेटाबेस घटकों का उपयोग करने के लिए ThinkPHP या अन्य डेटाबेस का उपयोग कर सकते हैं।

ध्यान दें
वर्तमान मैनुअल webman-v2 संस्करण के लिए है, यदि आप webman-v1 संस्करण का उपयोग कर रहे हैं, तो कृपया v1 संस्करण मैनुअल देखें।

डेटाबेस स्थापना

composer require -W webman/database illuminate/pagination illuminate/events symfony/var-dumper

स्थापना के बाद आपको restart (reload अप्रभावित) करना होगा।

संकेत
webman/database illuminate/database पर निर्भर करता है, इसलिए स्थापना के दौरान यह illuminate/database के निर्भरता पैकेज को स्वचालित रूप से स्थापित करेगा।

ध्यान दें
यदि आपको पृष्ठन, डेटाबेस घटनाएँ, SQL रिकॉर्ड करने की आवश्यकता नहीं है, तो आपको केवल Executing
composer require -W webman/database करना है।

डेटाबेस कॉन्फ़िगरेशन

config/database.php


return [
    // डिफ़ॉल्ट डेटाबेस
    'default' => 'mysql',

    // विभिन्न डेटाबेस कॉन्फ़िगरेशन
    'connections' => [
        'mysql' => [
            'driver'      => 'mysql',
            'host'        => '127.0.0.1',
            'port'        => 3306,
            'database'    => 'test',
            'username'    => 'root',
            'password'    => '',
            'unix_socket' => '',
            'charset'     => 'utf8',
            'collation'   => 'utf8_unicode_ci',
            'prefix'      => '',
            'strict'      => true,
            'engine'      => null,
            'options' => [
                PDO::ATTR_EMULATE_PREPARES => false, // जब swoole या swow को ड्राइवर के रूप में इस्तेमाल करते हैं तो ये आवश्यक है
            ],
            'pool' => [ // कनेक्शन पूल कॉन्फ़िगरेशन
                'max_connections' => 5, // अधिकतम कनेक्शन संख्या
                'min_connections' => 1, // न्यूनतम कनेक्शन संख्या
                'wait_timeout' => 3,    // कनेक्शन पूल से कनेक्शन प्राप्त करने के लिए अधिकतम प्रतीक्षा समय, समयबद्धता के बाद अपवाद उत्पन्न होगा। केवल सह-क्रम वातावरण में प्रभावी
                'idle_timeout' => 60,   // कनेक्शन पूल में कनेक्शन के अधिकतम निष्क्रिय समय, समयबद्धता के बाद बंद कर दिया जाएगा, जब तक कि कनेक्शन की संख्या `min_connections` के बराबर न हो जाए
                'heartbeat_interval' => 50, // कनेक्शन पूल हृदय गति पहचान समय, सेकंड में, 60 सेकंड से कम होना सुझावित
            ],
        ],
    ],
];

pool कॉन्फ़िगरेशन के अलावा, अन्य कॉन्फ़िगरेशन Laravel के समान हैं।

कनेक्शन पूल के बारे में

  • प्रत्येक प्रक्रिया के पास अपना कनेक्शन पूल है, प्रक्रियाओं के बीच कनेक्शन पूल साझा नहीं किए जाते हैं।
  • सह-क्रम न खोलने पर, व्यवसाय प्रक्रिया के भीतर कतार में निष्पादित होता है, जिससे कोई प्रतिस्पर्धा उत्पन्न नहीं होती है, इसलिए कनेक्शन पूल में अधिकतम केवल 1 कनेक्शन होता है।
  • सह-क्रम खोलने पर, व्यवसाय प्रक्रिया के भीतर प्रतीकात्मक रूप से निष्पादित होता है, कनेक्शन पूल आवश्यकतानुसार कनेक्शन की संख्या को गतिशील रूप से समायोजित करेगा, अधिकतम max_connections से अधिक नहीं होगा, न्यूनतम min_connections से कम नहीं होगा।
  • चूंकि कनेक्शन पूल का कनेक्शन की संख्या अधिकतम max_connections है, जब डेटाबेस कार्यों की सह-क्रम की संख्या max_connections से अधिक हो जाती है, तो कुछ सह-क्रम कतार में प्रतीक्षा करेंगे, अधिकतम wait_timeout सेकंड प्रतीक्षा करेंगे, इससे अधिक होने पर अपवाद उत्पन्न होगा।
  • निष्क्रिय स्थिति में (सह-क्रम और गैर-सह-क्रम वातावरण दोनों में), कनेक्शन idle_timeout समय बाद पुनर्प्राप्त किया जाएगा, जब तक कि कनेक्शन की संख्या min_connections (min_connections 0 हो सकता है) के बराबर न हो जाए।

डेटाबेस उपयोग का उदाहरण

<?php
namespace app\controller;

use support\Request;
use support\Db;

class UserController
{
    public function db(Request $request)
    {
        $default_uid = 29;
        $uid = $request->get('uid', $default_uid);
        $name = Db::table('users')->where('uid', $uid)->value('username');
        return response("hello $name");
    }
}

हम देख सकते हैं, उपयोग Laravel के समान है, डेटाबेस को संचालित करने के लिए Db::table() विधि का उपयोग किया गया है।