النتائج 1 إلى 14 من 14

الموضوع: هذه مشكلة المبرمجين العرب

  1. #1

    Exclamation هذه مشكلة المبرمجين العرب



    بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الخلق اجمعين سيدنا محمد صلى الله عليه وسلم . اما بعد

    اخوانى الكرام لقد بحثت كثيرا فى اكثر من منتدى واكثر من موقع ووجدت ان الكثير من اصحاب المواقع يعانى من مشكلة ارتقاع الضغط على قواعد البيانات وخصوصا ال Mysql ووجدت الكثير من الردود والحلول والاقتراحات البعض يقول اعدادات السيرفر والبعض يقول ضعف البرمجة

    والبعض يقول ان الفى بى شغال وما فى مشاكل طيب

    دعونا نتعرض لبعض الحلول والاقتراحات فى هذا الموضوع

    اليكم الامثلة التى وجدتها خلال بحثى الطويل فى هذا الموضوع

    1- البعض يقول فتح و اغلاق الاتصال بعد كل استعلام ( هذا الحل مستحيل ويسبب ارتفاع الضغط )
    2- البعض يقول استخدم نظام الكاش ( الفى بى لا يستخدمه ) ويعمل بكفاءة
    3- البعض يقول والبعض يقول الخ


    هل لنا بوقفه نحن المبرمجين العرب للتعرف على طرق الاتصال الصحيح بقواعد البيانات وعمل الاستعلامات بشكل جيد واسباب نوم الاستعلامات Query Sleep دعونا نجتمع يدا واحده ونناقش هذا الموضوع الخطير ونحدد من المسؤول وعلى من يقع الخطاء هل ادارة السيرفر هل المبرمج ام هل هو قصور فى mysql نفسها

    اخوانى الكرام دعونا نفتح النقاش ونسمى باسم الله لتفادى الاخطاء البرمجية التى تؤدى الى كارثه ارتفع اللود وسقوط السيرفر

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

    مع تحياتى
    استاذ نت
    انتظر ردودكم







  2. #2
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    السلام عليكم
    اخوي انا ماادري وش قصدك بالضغط !
    الـ MySmartBB لايسبب ضغط على السيرفر حسب تجربتي البسيطه ,
    وبعدين الإستضافه لها دور , بعض الإستضافات سيئه جداً جداً وبطيئه , في الـ vB وغيره.
    على العموم انا استخدم بقواعد البيانات الاتصال والاستعمالات فقط بدون اغلاق او كاش

    كود PHP:
    mysql_connect("localhost","root","12345");
    mysql_select_db("db1");
    $Query mysql_query("SELECT * FROM `table`"); 
    وبعض الأحيان استخدم
    كود PHP:
    unset($Query); 
    ولااواجه مشاكل ضغط او بطئ
    هذا احد سكربتاتي الصفحة الرئيسيـة - دروس مبرّمج
    عندي الموقع تصفحه سريع ماشاء الله ,.









  3. #3
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


    ff5006 :
    هذا لأن المتواجدون الآن 2 اونلاين

    ولكن مثل هذه المشاكل تحدث عندما يتخطى العدد 2000 اونلاين على السيرفرات الضعيفة او المتوسطة ..



    استاذ نت :

    المشكلة مرتبطة بالمبرمج + المستضيف


    المبرمج :
    - تقليل عدد الاستعلامات على قدر المستطاع + سرعتها + استخدام join واستعلامات معقدة .. وهذه حقيقة للاسف كلما زادت تعقيد الاستعلام زادت سرعته
    - استخدام ال indexes في الداتا بيز واختيار ال Primary keys بشكل صحيح .. لاحظ قاعدة البيانات لل vb نفسها ليست عادية .. بل يوجد امور لا تراها في اغلب قواعد البيانات للسكربتات ..
    - استخدام الكاش .. لا احد ينكر ابدا انه ميزة اضافية قاتلة لأي سكربت .. ليس لأن ال vb لا يستخدمها .. ان الكاش ليس له داعي .. بل هو من اقوى طرق تسريع الموقع والفعالة والمنطقية جدا .. واعتقد لو فهمت فكرتها بالضبط .. لغيرت رأيك



    المستضيف :
    - الاعدادات الصحيحة
    - الشغل الصح والناس اللي فاهمة كل حاجة بتعمل ايه



    باختصار عزيزي ،
    لما تلاقي مبرمج دارس وفاهم يعني ايه داتا بيز وكيفية عملها ، وماذا تفيد هذه وذاك .. وتأكد ان هناك خصائص لا يتم استخدامها بشكل دوري ولكنها معروفة عند البعض ومفهومة

    بالاضافة إلى مستضيف محترم فاهم شغله في السيرفرات

    تعطيك نتيجة ممتازة


    بالتوفيق





    __________________
    SWF Thumbnail - tweet me

  4. #4


    اخى Egyptechno انا لا اعتقد ان تعقيد الاستعلامات او سرعتها هو السبب
    لانك لو قمت باستعلام بسيط جدا ما راح ياخد غير اجزاء من الثانية لكن المشكلة تكمن فى انه بينام من جانب السيرفر وهذا طبعا فى المواقع الكبيرة

    فاكيد هناك طريقة لقتل الاستعلامات النائمة او قتله بعد تنفيذه لا ادرى انما اكيد هناك حل للموضوع وننتظر بقيه الاراء






  5. #5


    الا يوجد مبرمجين تستطيع التفاعل مع هذا الموضوع الهام والضرورى لكل مبرمج ام اننا نعرف ولا نحب ان نفيد





    __________________
    لا اله الا انت سبحانك انى كنت من الظالمين
    admin@byscripts.com
    www.byscripts.com

  6. #6
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    طريقة الإتصال بقاعدة البيانات تعتمد بشكل أساسي على نوعية البرمجية المستخدمة ، فقد تكون البرمجية قليلة الإستعلامات مما يعني عدم وجود حاجة لإستخدام الـ cache ، والعكس تماماً عندما تكون البرمجية تحتوي على عدد كبير من الإستعلامات ، لاتقم بمقارنة برمجيتك ببرمجية أخرى ، فكل برمجية لها وضع خاص يتناسب معها ، بالنسبة للإتصال فإنه لا يوضع إلا عند الحاجة للإرتباط مع قاعدة البيانات ، والإغلاق يكون عند نهاية هذا الإرتباط ، شخصياً أفضل إستخدام mysql_connect على mysql_pconnect .






  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    309


    استاذ نت
    السلام عليكم
    اخي العزيز
    اولا وقبل كل شي من الافضل ان تكون الاستعلامات قليلة يمكن مثلا الاستغناء عن استعلامين ودمجها في استعلام واحد في بعض الحالات
    ثانيا بعد الانتهاء من استخدام الاستعلام يمكنك مسحة باستخدام
    PHP: mysql_free_result - Manual
    تالتا استخدم الاستعلام المحدد ولا تستعلم عن الجدول كامل في حالة اردت حقل او حقلين منه اواكثر
    يمكنك التوقف عن استخدم الدالة PHP: mysql_fetch_array - Manual واستبدالها بي PHP: mysql_fetch_assoc - Manual او PHP: mysql_fetch_row - Manual وذلك لسرعتها عن الاولي
    كما يمكن استخدام الدالة الاولي مع تحديد الحالة
    MYSQL_BOTH , MYSQL_ASSOC , MYSQL_NUM
    طبعا في حالة الاستخارج
    رابعا في حالة عدم تجدد الصفحة مثلا بيانات ثابتة يمكنك استخدام cache system
    اخير من الافضل ان تكون الاستضافة نفسها جيده لتتحمل الضغط علي السيرفر





    التعديل الأخير تم بواسطة Bruce ; 29-06-2008 الساعة 05:16 PM
    __________________
    Bruce - مدونة شديدة التخصص في PHP وتطبيقات الويب

  8. #8


    اخى Bruce اسعدنى كثيرا ردك المنظم الجميل وكلامك فعلا صحيح لكننا نناقش الموضوع للخروج بافضل الحلول
    اما عن اصحاب الاستضافة فليس لديهم سوى كلمه واحدة ( هذه عيوب البرمجة العربية ) مع ان هناك الكثير منا قام بعمل مواقع جبارة

    لكن نقول ايه حجة البليد
    ننتظر باقى الاخوة الكرام بارائهم البناءة





    __________________
    لا اله الا انت سبحانك انى كنت من الظالمين
    admin@byscripts.com
    www.byscripts.com

  9. #9
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    181


    موضوع رائع واشكرك على طرحه
    ---
    من تجاربي الكثيره في هذا المجال
    - اظن انه فعلا عدد الكويري في الصفحه ليه عامل كبيره
    - طريقه كتابه ال كويري نفسها مثل ماقال الاخوان الكويري المعقده افضل لو عددها اقل
    - في ال asp.net مثلا بيروح لقاعده البيانات مره واحده ويجيب كل حاجه ويرجع يبني الموقع
    - زياده على ذلك جهلنا بما هو جديد كما طرح في الرد السابق في فنكشن اسرع نزلت وافضل للاستخدام
    - عاده المبرمجين العرب الان يستعمل كوبي وباست من شئ قديم ولا يرى ماطرح جديد وبيستخدم وخلاص مش عارف حتى بيستخدمها ليه
    - ووكذلك الدارس لقواعد البيانات كويس بيقدر يعمل علاقات جيده بالجداول ويجيب المحتوى بشكل افضل واسرع مما يأثر على سرعه الموقع
    وليا عوده ان شاء الله للمووضوع





    __________________
    يتم قبول الان استقبال اي طلبات التطبيقات
    على اي نوع من المنصات الاتيه للجوال
    ( اندرويد -- ايفون ) تابعنا
    ( أعمالنا - اتصل بنا )
    يمكنك الان عمل تطبيق خاص لمنتداك

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


    استاذ نت

    يمكنك التوقف عن استخدم الدالة PHP: mysql_fetch_array - Manual واستبدالها بي PHP: mysql_fetch_assoc - Manual او PHP: mysql_fetch_row - Manual وذلك لسرعتها عن الاولي

    هل mysql-fetch-assoc.php افضل من mysql_fetch_array ??????????????????????????????






  11. #11
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    151


    ماذا إذا كان عدد ال query في الصفحة الواحدة لا يتعدى أصابع اليد، ولكن عدد الزيارات على هذه الصفحة كبير فكيف يمكن التعامل مع هذا ؟ علما بأن الاستعلام لا يعطي نفس النتيجة كل مرة (نتيجة عشوائية على سبيل المثال)






  12. #12
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    309


    بكل تاكيد
    mysql_fetch_row
    mysql_fetch_assoc
    mysql_fetch_array
    بالترتيب من الاسرع الاي الابطء
    طبعا mysql_fetch_array يمكنك تغير حالتها اما MYSQL_BOTH , MYSQL_ASSOC , MYSQL_NUM
    وفي هذة الحالة تصبح مثل الدوال السابقة

    بخصوص

    Foxhound
    استخدم الاستعلام المحدد ولا تستعلم عن الجدول كامل في حالة اردت حقل او حقلين منه اواكثر
    ومن ثم حذف الاستعلام بعد الانتهاء منه بواسطة mysql_ free_ result
    سلام





    __________________
    Bruce - مدونة شديدة التخصص في PHP وتطبيقات الويب

  13. #13
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647
    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  14. #14
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    كذلك ، أحياناً نحتاج للاستعلام عن نتيجة واحدة ، مثل:
    كود:
    $query = mysql_query("SELECT COUNT(*) FROM table");
    $query = mysql_query("SELECT LAST_INSERT_ID()");
    عندها يمكننا استخدام mysql_result، بدلاً من mysql_fetch_* :
    كود PHP:
    $result mysql_result($query00); 
    حيث نحصل على القيمة المطلوبة من نوع INT ..

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!





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

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

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