هل يسبب هذا النوع من الطلبات في عدم إستجابة السيرفر

  • Houssamus

لدي كلاس PackagesHoolm و فنكشن HoolmTRans أستخدمه في views :

value1 هي الكلمة التي أريد جلبها من قاعدة البيانات

value2 هو إسم الجدول داخل قاعدة البيانات

الفكرة أن أطلب الفنكشن وأضع فيها الكلمة و الجدول الخاص بترجمة الكلمات :

{!! PackagesHoolm::HoolmTRans('site_name','transsettings') !!}

فنكشن HoolmTRans تأخذ اللغة الموجودة في session مثلا en أو ar ثم تقوم بأخذ الكلمة site_name و تبحث عنها في الجدول transsettings بإستخدام where ثم تأخذ الترجمة من العمود الخاص بالكلمة مثلا en و في الأخير تظهر الكلمة في view، وهكذا في جميع كلمات الموقع عند تغير session languages يتم تغير ترجمة الموقع.

الفكرة خاصة بالترجمة من خلال قاعدة البيانات..

هذه الصورة توضح شكل الجدول

سؤالي هل هذه الطريقة تؤثر سلبا على سرعة إستجابة الموقع والسرفر بشكل كامل بسبب كثرة الاستعلامات على قاعدة البيانات لأنه عند فتح صفحة يتم جلب جميع كلماتها من قاعدة البيانات وبالتالي هل تشكل مشكلة كبيرة في استجابة الموقع وهل تصل لعدم الاستجابة تماما أم أنها تعتبر شيئ طبيعي


نعم أخي يسبب ضغط كبير على السيرفر .

الهدف الأساسي من استخدام قواعد البيانات هو حفظ و تنظيم المعلومات الديناميكية (المعلومات التي تتغير و تزيد باستمرار نتيجة لعمل البرنامج) .

أما ترجمة الموقع فهذا شيئ يكتب مرة واحدة عند كل اصدار ثم يقوم البرنامج بقرائته فقط دون الزيادة أو التعديل عليه .

فلا أرى أن حفظ الترجمات في قاعدة البيانات مفيد بالنسبة لبرنامج صغير (في حال البرامج الكبيرة التي تعمل على أكثر من سيرفر في نفس الوقت قد يكون حفظ المعلومات الغير متغيرة في قاعدة البينات منطقيا لتكوين واجهة واحدة يتعامل معها كل السيرفرات بدلا من ادارة ملفات الترجمة في كل سيرفر)

و لذلك لديك حلان

1- caching : فعند قرائتك من قاعدة البينات احفظ ما قرأته في cache في الرام مباشرة بحيث عند كل طلب تتأكد ان كانت الترجمة في الكاش فان لم تكن جلبتها من قاعدة البينات و حفظتها في الكاش .

2- proprties files : ضع الترجمة في properties file أو po file و عند بداية البرنامج اقرأ المعلومات مرة واحدة الى مفوفة في الرام ثم عندما تحتاج الى ترجمة فقط ابحث عنها في المصفوفة .