سلام ، فرض کنین میخوایم از چند تا database برای پروژهمون استفاده کنیم.(تعداد خیلی زیاد)
یک دیتابیس ، اطلاعات اصلی سایت توشه ، و بقیه دیتابیس ها ساختارشون با هم مشابهه ولی دارای اسم های مختلفی هستن، برای واضح شدن موضوع یه مثال میزنم، مثلا ما یه فروشگاه ساز داریم، یه دیتابیس اصلی داره این فروشگاه ساز ، و به ازای هر فروشگاهی که ساخته میشه ، یه دیتابیس مجزا برای همون فروشگاه ساخته میشه
مثلا دیتابیس اصلی اسمش ، dbmain و به ازای هر فروشگاه dbshop۱, dbshop۲, ...
در نتیجه در زمان ورود به هر فروشگاه ما با ۲ تا instance ااز دیتابیس کار میکنیم ، که یکی دیتابیس اصلی فروشگاه ساز و دیگری ، دیتابیس خود شاپ (dbshopN) هستش.
من ۲ تا راه حل پیشنهادی مینویسم ، ممنون میشم نظرتون رو بفرمایین.
۱ - تو database.php یکبار
'dbShop' => [
'driver' => 'mysql',
'host' => '',
'port' => '',
'database' => '',
'username' => '',
'password' => '',
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf۸',
'collation' => 'utf۸_general_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
اینو اضافه کنم ، و هر زمان که میخوام رو این دیتابیس query بزنم ، مقادیر database و username , password رو عوض کنم و query برنم.(مسئله همزمانی)
۲ - به اضای هر فروشگاه که ساخته میشه ، بیام به database.php ، همون تیکه کد بالا رو به اسم اون فروشگاه مثلا ، تعریف کنم ، و زمان کویری زدن ، connection رو عوض کنم .
ممنون میشم ، نظرتون رو در این باره به اشتراک بزارین.
@hesammousavi
سلام به نظر من شما بهتره از ساختار زیر برای داینامیک ساختن تعریف دیتا بیس استفاده کنید
به سادگی میتونید با دستور زیر مقادیر مورد نظرتون رو توی database.php ست کنید
Config::set("database.connections.mysql", [
"host" => "...",
"database" => "...",
"username" => "...",
"password" => "..."
]);
بله این همون مورد اولیه که گفتم، ولی آیا همزمان تعداد درخواست بالا داشته باشیم و هر کدوم هم بخوان این دیتا رو عوض کنن، مشکل پیش نمیاد؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟