صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 24

الموضوع: ممكن نصائح فعالة لتقليل ال connection في قواعد البيانات

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270

    ممكن نصائح فعالة لتقليل ال connection في قواعد البيانات



    السلام عليكم

    اخواني اواجه مشكلة كبيرة واريد النصيحة لاصلاح السعلة

    انا برمجت سكربت كبير www.palissue.com/arabic

    الموقع كامل ولاكن كثر الضغط على الموقع يسبب مشاكل في قواعد البيانات - المشكلة المعروفة max_user_connection

    وابعد التحليل وجدنا ان السبب هو المسخدم الخاص في قاعدة بيانات الموقع الخاصة في السكربت الي انا امبرمجه


    الان ما هي النصائح البرمجية التي يجب اتخاذها لتقليل استهلاك الاتصالات الغير ضرورية

    اقصد متى ممكن عمل mysql_close? ومتى عمل unset? وأهل الافضل استخدام mysql_pconnect او mysql_connect

    مع العمل انا الان استخدم mysql_connect


    ممكن المساعدة؟؟؟

    معظم الاوامر في السكربت هي التالية
    mysql_query
    mysql_num_rows
    mysql_fetch_array


    فما هو العمل والنصائح التي ممكن تساعد في حل هذه المشكلة

    وشكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر



  2. #2
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    63


    حبيت أشكرك على وضوح عنوان موضوعك
    والدليل إن الموضوع باقي له شوي ويصير بالصفحة الثانية وعدد الزوار 1، وأنا 2
    ياليت الإخوان اللي يدخلون الآن، يكتبون أي معلومة يرونها أو يعتقدونها ممكن إنها تفيد
    والصحيح سيكون له مؤيد
    والخطأ من النصائح، سيكون عليه ملاحظات
    وشكرا مرة أخرى






  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    789


    وعليكم السلام

    عفواً اخى كم mysql_connection تستخدم بالسكربت، واذا اكثر إستخدامك عرض بيانات من قاعدة البيانات هل قمت ببرمجة نظام كاش للصفحات بحيث يخفف على الضغط على الخادم، واذا كنت لا تستطيع قم ببرمجة نظام كاش للقاعده





    __________________
    متى استعبدتم الناس وقد ولدتهم أمهاتهم أحرار........
    -----------------------------------
    شبكة الشعر الادبيه

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم ما بعرف كيف بعرف عدد ال mysql_connection

    كيف ممكن اعرفه؟؟


    وما هو نظام الكاش وكيف ممكن برمجته اذا امكن الشرح؟؟

    شكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  5. #5
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    على فكرة كافة الموقع يعتمد بشكر كبير على قرائة قواعد البيانات - لذلك العدد كبير لقرائة القواعد

    ياريت المساعدة في معلومات عن نظام الكاش وطريقة عمله

    تحياتي





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  6. #6
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2002
    المشاركات
    889


    السلام عليكم
    أخي الكريم elkaser يوجد حل غير البرمجة طبعاً بشكل مؤقتي:

    السيرفر أيضاً يتعرض لحملات من نوع DDos
    في حال توفر البرميشن لإدارة السيرفر:
    ريستارت لـ MySQL أو زيادة عدد الاتصال بقاعدة البيانات في آن واحد https://interserver.net/cms/support/...d=21&nav=0,3,7






  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم
    أخي الكريم elkaser يوجد حل غير البرمجة طبعاً بشكل مؤقتي:

    السيرفر أيضاً يتعرض لحملات من نوع DDos
    في حال توفر البرميشن لإدارة السيرفر:
    ريستارت لـ MySQL أو زيادة عدد الاتصال بقاعدة البيانات في آن واحد https://interserver.net/cms/support/...d=21&nav=0,3,7
    السلام عليكم نعم اخي العزيد انا شخصيا اعلم بهذا الحل هو مفيد ولاكني للاسف جربت هذا الحل ولاكن لم ينفع

    في الحقيقة قمت بوضع اشارة ال # قبل هذا السطر لعدم تحديد اي حدود ولاكن هذا لم يساعد


    لذلك ابحث عن حل جزري للمشكلة





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  8. #8
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم اعتقد الحل الامثل كما فهمت من مواضيع وحلول هو برمجة CacheEngine class

    ولاكن كيف وما هو هذا الكلاس وما فوائده؟؟؟

    يرجا المساعد في هذا الامر





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  9. #9


    الشيء الذي أعرفه أن الدالة mysql_connect
    تقوم بإغلاق نفسها حين الانتهاء من الأمر الصادر
    و لا يوجد داعي لاستخدام الدالة mysql_close

    PHP: mysql_close - Manual

    الحل الوحيد برمجة الكاش






  10. #10
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    اخي مسدار شكرا لمداخلتك ولاكن كيف ممكن برمجة الكاش؟؟





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  11. #11
    عضو فعال
    تاريخ التسجيل
    May 2004
    المشاركات
    1,591


    اخوي اقترح عليك مؤقتاً تعمل Anti Flood
    وتشوف النتيجة ...
    Swift Mailer Source Code : AntiFlood.php

    والله يعينك .





    __________________
    دروس php بالفيديو !

    marabe7 سابقاً .

    حسَّن موقعك في محركات البحث :
    أكاديمية التطوير

  12. #12
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم
    اخي العزيز شكرا الك ولاكن ما وظيفة هذا السكربت؟؟ وما هي فوائده؟؟؟ وكيف التعامل معه؟؟؟

    شكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  13. #13
    عضو سوبر نشيط
    تاريخ التسجيل
    Oct 2003
    المشاركات
    718


    ان شاء الله تجد من يفيدك من الاخوان.. ولدي تعليق بسيط

    عادة لما يكون فيه مشاكل الكونيكشن .. تجد ان المشكلة لا تتعلق بكمية الاستعلامات ..

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

    فإذا لم يكن أحدها عندها تبحث عن مشكلة الاستعلام اللي يسبب لك هذه المشكلة .. مثلا يكون السكربت شغال تمام بس المشكلة بسيطة وهي طريقة جمع عدد الضغطات ..

    فقد تجد ان استعلام واحد فقط هو المسبب لهذه المشكلة ..

    وكتجربة ، العمليات الحسابية في الاستعلام حاول تعطلها مؤقتا مثلا sum‏ أو count‏ وجرب تشغل السكربت ..

    تمنياتي لك أن تصل مبتغاك ،،،






  14. #14
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    779


    اخوي عندي نصائح استنتجتها من برمجتي و تطويري للبوابة العربية
    1- عند الاستعلام select حاول تحدد الحقول و لا تستخدم النجمه *
    2- حاول تستخدم خاصيه الكاش الخاص بالجدول و هنا موضوع خاص بذلك
    http://www.swalif.net/softs/swalif45...2/#post1655677
    3- اخوي حاول تستخدم array في الاستعلامات المتكرره
    4- جرب استخدام mysql_pconnect





    __________________
    أهلا و سهلا بكم في :-
    موقع دار الأوائل
    تفضل معنا خدمات الاستضافة
    موقع العبقري لخدمات الاستضافة

  15. #15
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    عزيزي

    لدي بعض النصائح

    أولا: عليك تلاشي تكرار اسماء الحقول في جميع الجداول.
    وذلك لأنه سيسهل ويمكن عملية ربط الجداول ببعضها البعض كما سنرى

    ثانيا: عليك ربط جداول قاعدة البيانات ببعضها البعض.
    واقصد بالرابط ان يكون هناك حقل في كل الجداول التي تعتقد انها مترابطه، يربط بالجدول الاخر
    مثال.. ان كان لدينا جدولان الاول للاقسام والاخر للمنتجات..
    فلابد من وضع حقل في جدول المنتجات يرمز الى القسم الذي ينتمي له في جدول الاقسام
    لاحظ أن هذا ليس فقط لمعرفة ان المنتج س ينتمي للقسم ص.. وانما لتقليل الاستعلام كما سنرى

    ثالثا: عليك التخلي عن الاستعلامات الفرديه طالما كان بالامكان ربطهم ببعض.
    فمثلا في المثال السابق.. إن اردت برمجة صفحه لتعرض 5 منتجات مع بيان اسماء اقسامهم..
    فإن الحل التقليدي يكون بعمل التالي..
    الاول هو استعلام عن جدول المنتجات
    كود PHP:
    "SELECT prod_name,cat_id FROM products LIMIT 5" 
    ومن ثم نعمل استعلام اخر لكل منتج نستعلم فيه عن اسم القسم الذي ينتمي اليه من جدول الاقسام من خلال الحقل الذي تم جلبه من جدول المنتجات ولنفرض ان اسمه هو cat_id ونحن مازلنا في حلقة التكرار
    كود PHP:
    "SELECT cat_name FROM categories WHERE cat_id=$cat_id
    وبهذا يكون عدد الاستعلامات
    1 من جدول المنتجات
    5 من جدول الاقسام
    ليصبح المجموع 6 استعلامات لكل زائر يقوم بزيارة تلك الصفحه..
    فتخيل ان زار تلك الصفحه 10 اشخاص في نفس الوقت.. فسيكون مجموع الاستعلامات هو 6 * 10 = 60 استعلام..

    مع العلم انه من الممكن دمج تلك الاستعلامات باستعلام واحد فقط..
    اليك الطريقة

    نعلم انه الحقل الذي يربط جدول المنتجات بجدول الاقسام هو حقل الـ cat_id اذا فسيكون الاستعلام كالتالي


    كود PHP:
    "SELECT DISTINCT a.prod_name, b.cat_name FROM products a, categories b WHERE a.cat_id=b.cat_id LIMIT 5" 
    في هذا الاستعلام.. قمنا بكتابة جميع الحقول التي نريد جلبها وهم prod_name و cat_name (مع العلم انهم من جداول مختلفه.. اي لا ينتمون لنفس الجدول)
    ولكي نخبر الخادم بأنهم حقول ذات جداول مختلفه.. قمنا بكتابة a و b وهي حروف اختياريه لكي نفرقهم عن بعض..
    وبعد ذلك اخبرناه اننا نقصد بالحقول التي يسبقها حرف الـ a انها تنتمي لجدول المنتجات وحرف ال b انها للاقسام بكتابة التالي FROM products a, categories b
    واخبرناه بالشرط الذي نريده.. وهو ان يعرض اسم قسم المنتج الذي تم جلبه بكتابة التالي WHERE a.cat_id=b.cat_id اي اننا نشترط ان تكون قيمة حقل ال cat_id الموجود في جدول المنتجات
    مطابقه لقيمة حقل ال cat_id الموجود في جدول الاقسام
    واخيرا قمنا بتحديد عدد الصفوف المراد جلبها بكتابة LIMIT 5

    وبتطبيق الفرض السابق.. 10 زوار لنفس الصفحه فسيكون مجموع الاستعلامات هو 10 استعلامات بدلا عن 60..
    اي اننا قمنا بتوفير 60 - 10 = 50 استعلام غير ضروري...

    رابعا: تلاشى قدر الامكان اوامر ال JOIN (left, right...).
    وذلك بسبب الوقت الكبير الذي تستغرقه في عملية الربط.. لأنها تقوم بانشاء جدول اخر مؤقت..

    خامسا: استخدم نظام ال cache.
    بما أن الـ 10 استعلامات قد تصل الى 100 او اكثر.. فمازلنا نواجه مشكله ضغط الاستعلامات
    ولحل تلك المشكله.. علينا استخدام نظام الذاكرة المؤقته.. وذلك لكي نتلاشى فكرة عمل استعلام
    في كل مرة يتم زيارة تلك الصفحه الى ان يتم تحديث بيانات الجدول وبذلك نقوم بعمل استعلام واحد فقط
    وبهذا نكون قد حللنا مشكلة كثرة الاستعلامات.. لأننا في الواقع لا نقوم بالاستعلام عنها.. بل نقوم بعرضها
    من ملف قمنا بجلب محتوياته من القاعده عندما تم تحديثها وقمنا بتخزينه ليتم استدعائه في كل مرة نستدعي
    تلك الصفحه عوضا عن عمل استعلام من القاعده والضغط عليها..

    سادسا: كما للـ mysql_pconnect حسنات لها عيوب.
    اجمل ما في تلك الداله هو انها لا تقوم بعمل اتصال مع القاعده لكل زائر.. وانما قبل ان تقوم بعمل ذلك الاتصال تقوم بالبحث عن اية اتصالات مفتوحه لتقم بالاعتماد عليها وتجلب عن طريقها البيانات المستعلم عنها
    ولكن لا يمكن قفلها بالداله mysql_close()
    ولمعرفة المزيد عن عيوبها راجع التعليقات الموجوده هنا PHP: mysql_pconnect - Manual
    فان لم تكن عيوبها تسبب لك اي مشكله.. انصحك بها


    اخيرا
    اتمنى ان اكون قد أفدتك
    بالتوفيق..





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا|شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض