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

الموضوع: مشكلة 'max_user_connections' وضعف ال mysql_close()

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

    مشكلة 'max_user_connections' وضعف ال mysql_close()



    السلام عليكم
    هناك ضغط شديد على الموقع عندي (ملاحظة الموقع انا قمت ببرمجته - اي مبرمج ليس خبير)

    ففي الاونة الاخيرة واجهت مشكلة انه كل شوي بتطلعلي مشكلة 'max_user_connections' وقمنا بزيادة عدد ال onnections في قاعدة البيانت ولاكن المشكلة مستمرة

    الان قالت لي الشركة يجب ان تقوم باغلاق اي connection بعد الانتهاء من استخدامه اي بوضع mysql_close() في كل ملف موجود فيه امر استطلاع من قواعد البيانات!!!!!!!!!!!!!!!

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

    يا اخوان مش عارف مين الصح!!!! اهل في الحقيق المفروض استخدام mysql_close() ؟؟
    ولاكن السكربتات الكبيرة لا تستخدمها نهائيا

    فما العمل وهل يجب استخدام mysql_close() ؟؟؟

    وشكرا





    __________________


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



  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    من رايي تستخدمها وتستخدم برضة mysql_free_result






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


    السلام عليكم اخي العزيز طيب لنفرض انو استخدمناها - اذا وين نستخدمها بعد اي امر من الاوامر؟؟ select, delete, or update ????

    ولمذا نستخدمها ما فائدتها ؟؟؟ (ملاحظة ان البعض يقول انها ضعف برمجي - والسكربتات القوية والكبرة لا تستخدمها نهائيا)

    وايضا ياريت توضيح mysql_free_result لمذا نستخدمها ومتى؟؟
    وشكرا





    __________________


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


  4. #4
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    107


    يجب تفريغ الذاكرة من الاستعلامات

    بعد كل استعلام Query يجب ان تفرغ الذاكرة منه بعدة طرق مثلا

    كود PHP:
    $sql mysql_query("select ...");

    ........... 
    //

    mysql_free_result($sql); 
    أو

    كود PHP:
    unset($sql); 







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


    اها شكرا جزيلا لتوضيحك - هذا سبب مقنع لسبب الضغط على الموقع عندي

    بس توضيح اكثر اذا سمحت mysql_free_result تستخدم عند كل امر SELECT ام كل الاوامر INSERT و UPDATE و DELETE ايضا ؟؟؟؟؟؟؟؟

    بارك الله فيك





    __________________


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


  6. #6
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    استخدم ... الدالة mysql_pconnect فهي افضل في الاتصال بقاعدة البينات.
    http://www.php.net/mysql_pconnect





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

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


    نعم مع جميع الاوامر
    select
    update
    ...

    الخ








  8. السلام عليكم

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


    خصوصا في المواقع والبرامج الكيرة


    كما قال الاخ نعيم


    mysql_free_result($sql);

    أو

    unset($sql);


    لكن ايضا السؤال


    بس توضيح اكثر اذا سمحت mysql_free_result تستخدم عند كل امر SELECT ام كل الاوامر INSERT و UPDATE و DELETE ايضا ؟؟؟؟؟؟؟؟

    اخي ضيف الله دالة جديدة اول مرة اعرفها صراحة

    وجربتها ولاحظت فرق بسيط في الأداء

    استخدمته بالشكل

    $matt = mysql_pconnect($host , $user , $pass);


    هل توجد اي بارامترات اضافية لها ؟


    وايهما افضل في الطريقتين

    الأولى :
    -الاتصال بقاعدة البيانات
    -جلب النتاجئ وتنفيذ الاستعلام
    -تفريغ الذاكرة
    -اغلاق الاتصال
    -ثم تكرار العملية لتنفيذ استعلام اخر


    الطريقة الثانية :
    -الاتصال بقاعدة البيانات
    -جلب النتاجئ وتنفيذ الاستعلام
    -تفريغ الذاكرة
    -ثم تكرار العملية لتنفيذ استعلام اخر

    -اغلاق الاتصال





    اتمنى الافادة مع خالص الشكر والتقدير





    __________________
    كل مالا يعطى يضيع

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


    دالة mysql_pconnect تبقي الاتصال مفتوح

    افضل mysql_connect

    مع التحية






  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    الاخ elkaser

    مااتوقع انها ضعف برمجي :| ولو انها ضعف برمجي ماوضعت في ال php من الاساس

    بس مثل ماقال الاخ ضيف استعمال mysql_pconnect افضل بكثير ويغنيك عن استعمال mysql_close

    بالنسبة ل mysql_free_result افضل استخدامها في نهاية الملف يمكن استخدامها بعد الاستعلام مباشرة افضل ؟؟؟ ماادري صراحة

    تحياتي






  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2003
    المشاركات
    461


    اخي الكاسر ..

    الطريقة الصحيحة هي

    الاتصال بقاعدة البيانات
    جلب النتاجئ وتنفيذ الاستعلام
    تفريغ الذاكرة
    ثم تكرار العملية لتنفيذ استعلام اخر
    اغلاق الاتصال

    أي

    كود PHP:
    $link mysql_connect($db_server$db_user$db_pass);
    mysql_select_db($db_name$link);

    $sql1 mysql_query();
    $row1 mysql_fetch_array($sql1);
    mysql_free_result($sql1);

    $sql2 mysql_query();
    $row2 mysql_fetch_array($sql2);
    mysql_free_result($sql2);

    $sql3 mysql_query();
    $row3 mysql_fetch_array($sql3);
    mysql_free_result($sql3);

    mysql_close($link); 






    __________________
    AlwatanVoice, www.alwatanvoice.com
    Almashroo, www.almashroo.com

    Pal Coder == Palestinian Coder



  12. إذا إستخدمت دالة الـmysql_pconnect فان الاتصال يبقى مفتوحاً ولن يتم اغلاقه الا عن طريق دالة الاغلاق (لذا فهي غير مجديه بهذا الشأن) .

    the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).
    المصدر http://www.php.net/mysql_pconnect

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


    Note: The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling mysql_close().
    المصدر :http://www.php.net/manual/en/function.mysql-connect.php

    الـvBulletin يستخدم دالة mysql_connect
    كذلك MySmartBB
    اتمنى اكن قد افدتك ولو بالقليل





    __________________
    ################################ PHP.SD ########
    We're not first,But We're the BEST

    ##

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


    السلام عليكم
    اخواني بارك الله فيكم

    ردا على الاخوان اخي العزيزي Pal Coder لم افهم مغزا كودك للاسف يرجا توضيح اكثر


    اما الاخوان اذا نصل الى الخلاصة التالية
    نستخدم ال mysql_connect
    وايضا وضع mysql_free_result بعد كل امر يعني

    كود PHP:
    $call=mysql_query("SELECT * FROM DB");

    while(
    $row=mysql_fetch_array($call)){  
    echo 
    $row['id']; 

    mysql_free_result($call); 
    وايضا
    كود PHP:
    $call=mysql_query("INSERT INTO  DB id VALUES '$id'            ");
    mysql_free_result($call); 


    واخيرا
    كود PHP:
    $call=mysql_query("UPDATE DB SET name='$newname' WHERE id=$id ");
    mysql_free_result($call); 
    على فكرة يا اخوان لا اعلم لمذا يجب وضع mysql_free_result بعد امر ال insert و ال update كما اتصور ان ال mysql_free_result لتفريغ النتائج ولاكن ال insert و ال update يضيفن اوامر ولا يقوم باستخراج اوامر - يرجا توضيح بسيط





    __________________


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


  14. #14
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    على حسب مافهمت من موقع php على الرابط

    http://www.php.net/mysql_pconnect

    يوجد اختلافين رئيسيين عن mysql_connect

    الاول :: mysql_pconnect تحاول البحث عن اي اتصال مفتوح مع القاعدة وتستعملة اي انها لاتفتح اتصال جديد مع القاعدة وهذة ميزة

    الثاني :: يضل الاتصال مفتوح مع القاعدة للاستخدام لاحقا اي ان الاتصال لن يغلق حال انتهاء تنفيذ الملف

    =================mysql_free_result

    اتوقع من الموجود في موقع php.net مايأثر كثير مكان وضع mysql_free_result لانها راح تتنفذ في كل الحالات بعد انتها تنفيذ السكربت

    للتاكد ممكن نستخدم memory_get_usage() حتى نشوف الذاكرة المستخدمة في كل الحالات ونقرر الافضل

    ياليت الي يجرب يعطينا النتيجة

    تحياتي








  15. السلام عليكم و رحمة الله و بركاته

    اخي الكريم استخدم mysql_pconnect

    صحيح انها لا تغلق و لكن الأخوان لم يوضحوا انها ميزه اوضحوا انها سيئة

    في حال فتحت اتصال عن طريق pconnect

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

    عن نفسي استخدم pconnect للبرمجيات الي بيكون عليها hits كثيره فهي افضل


    بالتوفيق





    __________________
    سبحان الله و بحمده .... سبحان الله العظيم

    للمراسلة





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

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

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