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

الموضوع: الوسيلة المثلى لتخزين الـ ip في قاعدة البيانات

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

    الوسيلة المثلى لتخزين الـ ip في قاعدة البيانات



    قد يتسائل البعض عن الوسيلة المثلى لتخزين رقم الـ ip لمستخدم ما في قاعدة البيانات ، الحل يكمن في دالتي mysql ..
    كود PHP:
    inet_aton() and inet_ntoa() 
    الدالة inet_aton تقوم بتحويل الـ ip الى رقم مكون من 10 خانات ، بمعنى ان حقل الـ ip في قاعدة البيانات سيكون من النوع int او النوع الرقمي ويبلغ حجمه 10 ارقام ..
    كود:
    int(10)
    حسناً الدالة inet_ntoa تقوم بعكس عمل الدالة الاولى ، بمعنى انها تقوم بتحويل الرقم المكون من عشرة خانات الى ip ..

    الآن ستكون طرق الاستعلام كالتالي ..

    - عند اضافة سجل جديد نقوم بتخزين رقم الـ ip كالتالي ..
    كود PHP:
    insert into `table_name` ( `ip` ) values inet_aton($ip) ); 
    حيث ان المتغير ip يحوي قيمة مثل 127.0.0.1 ..

    - عند الاستعلام عن سجل ما نستخدم الدالة inet_ntoa ..
    كود PHP:
    select inet_ntoa(`ip`) from `table_name
    حيث ان الحقل ip يحتوي على قيم مثل 3520061480 ( 10 خانات ) ..

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

    بالمناسبة توجد دالتين في php تقومان بنفس العمل ، يمكنك استخدام الدالتين ip2long و long2ip لنفس الاستخدام .. ، لكن لماذا استخدام php بينما mysql تؤدي الغرض ؟

    يمكنك القراءة عن inet_aton و inet_ntoa في المرجع الخاص بـ mysql للاستزادة ..





    التعديل الأخير تم بواسطة dev11 ; 13-03-2009 الساعة 04:29 PM سبب آخر: خطأ منطقي
    __________________
    مدونة؟


  2. #2


    لم أسمع عنها من قبل وكنت أخزن ال ip مباشرة
    هل تعطي أي ميزة إضافة بتخزينها بهذه الصورة ؟

    أيضا أنصحك بإستخدام ال php بدلاً عن ال mysql قدر المستطاع
    فدائما قواعد البيانات هي الأكثر إرهاقا للسيرفر
    أدخل لأي سيرفر عبر الشل وأكتب top لتشاهد بنفسك





    __________________
    السيف أصدق أنباء من الكتب

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


    جزاك الله خيراً .. معلومة مفيدة





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

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


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

    بالنسبة لاستخدام php ، فأنا غالباً أتفق معك في ذلك ، لكن هل هذه العملية بالذات تؤثر على الخادم ؟ لا أستطيع الاجابة عن ذلك لأنه لاتوجد لدي المعطيات الكافية لذلك .. ، اذا كنت مقتنعاً برأيك .. فكما ذكرت .. توجد دالتين في php تؤدي نفس الغرض تماماً ..

    وبما أنك تطرقت الى تخفيف العمليات في الاستعلام .. فماذا عن الاستعلام عن تاريخ مخزن بصيغة timestamp ، وكما تعلم ان mysql لا تقوم بتخزين القيمة الرقمية ، بمعنى انها لاتخزنه بقيمة على شكل ارقام كما تعطي الدالة time في php بل تكون على وزن الصيغة ..
    كود:
    00-00-0000 00:00:00
    لذلك ان اردت ان اقوم بإيجاد القيمة الرقمية لها فإنني سأستخدم ..
    كود:
    .. unix_timestamp(created) ..
    هل تقترح إستخدام strtotime في مثل هذه الحالة ؟ لأنه توجد حالات لابد أن تتعامل مع دوال mysql فيها .. ، فلا يعقل ان اقوم بعمل استعلام لايجاد التاريخ ثم تحويله الى الصيغة المرادة ثم عمل استعلام آخر بينما يمكنني عمل ذلك بسهولة عن طريق mysql ، هل وصلت المعلومة ؟





    __________________
    مدونة؟

  5. #5
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    معلومة جديدة وفيدة .. شكرا عليها





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

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


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

    بالنسبة لاستخدام php ، فأنا غالباً أتفق معك في ذلك ، لكن هل هذه العملية بالذات تؤثر على الخادم ؟ لا أستطيع الاجابة عن ذلك لأنه لاتوجد لدي المعطيات الكافية لذلك .. ، اذا كنت مقتنعاً برأيك .. فكما ذكرت .. توجد دالتين في php تؤدي نفس الغرض تماماً ..

    وبما أنك تطرقت الى تخفيف العمليات في الاستعلام .. فماذا عن الاستعلام عن تاريخ مخزن بصيغة timestamp ، وكما تعلم ان mysql لا تقوم بتخزين القيمة الرقمية ، بمعنى انها لاتخزنه بقيمة على شكل ارقام كما تعطي الدالة time في php بل تكون على وزن الصيغة ..
    كود:
    00-00-0000 00:00:00
    لذلك ان اردت ان اقوم بإيجاد القيمة الرقمية لها فإنني سأستخدم ..
    كود:
    .. unix_timestamp(created) ..
    هل تقترح إستخدام strtotime في مثل هذه الحالة ؟ لأنه توجد حالات لابد أن تتعامل مع دوال mysql فيها .. ، فلا يعقل ان اقوم بعمل استعلام لايجاد التاريخ ثم تحويله الى الصيغة المرادة ثم عمل استعلام آخر بينما يمكنني عمل ذلك بسهولة عن طريق mysql ، هل وصلت المعلومة ؟
    حقيقة انا استخدم في الاضافة الدالة UNIX_TIMESTAMP() في الاستعلام مباشرة ويقوم باضافة التاريخ الحالي بصيغة ال unix بدلا من عمل متغير بالدالة time() في ال php

    وعند العرض يمكن عرضها تماماً مثل الدالة date() في php يمكن استبدالها ب
    كود PHP:
     FROM_UNIXTIME(date_table,'%Y-%m-%d'






    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

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


    موضوع قيم لا يسعني المرور دون الرد عليه
    و شكرا لكل من ساهم في إترائه






  8. #8


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

    بالنسبة لاستخدام php ، فأنا غالباً أتفق معك في ذلك ، لكن هل هذه العملية بالذات تؤثر على الخادم ؟ لا أستطيع الاجابة عن ذلك لأنه لاتوجد لدي المعطيات الكافية لذلك .. ، اذا كنت مقتنعاً برأيك .. فكما ذكرت .. توجد دالتين في php تؤدي نفس الغرض تماماً ..

    وبما أنك تطرقت الى تخفيف العمليات في الاستعلام .. فماذا عن الاستعلام عن تاريخ مخزن بصيغة timestamp ، وكما تعلم ان mysql لا تقوم بتخزين القيمة الرقمية ، بمعنى انها لاتخزنه بقيمة على شكل ارقام كما تعطي الدالة time في php بل تكون على وزن الصيغة ..
    كود:
    00-00-0000 00:00:00
    لذلك ان اردت ان اقوم بإيجاد القيمة الرقمية لها فإنني سأستخدم ..
    كود:
    .. unix_timestamp(created) ..
    هل تقترح إستخدام strtotime في مثل هذه الحالة ؟ لأنه توجد حالات لابد أن تتعامل مع دوال mysql فيها .. ، فلا يعقل ان اقوم بعمل استعلام لايجاد التاريخ ثم تحويله الى الصيغة المرادة ثم عمل استعلام آخر بينما يمكنني عمل ذلك بسهولة عن طريق mysql ، هل وصلت المعلومة ؟
    يمكنك تخزين الوقت ب10 أرقام فقط عن طريق تحويله أولاً ب mktime
    هناك حلول لكل شيئ وانا لم أقل أنه يمكننا لإستغناء عن الداتا بيز كلياً وإلا أصحاب كورسات الأوراكل سيقتلوني فهم يدرسون عمل الدوال الشرطية وال case وغيرها بتعليمات

    ولكنني قلت الأفضل نبتعد قليلاً عن الداتا بيز كوني بعد متابعات كثيرة وجدت أنها عنق الزجاجة في كل سيرفر

    كما بينت أدخل أي سيرفر وأكتب في الشل top ستجد الماي سكول متربع علي عرض الحمل علي المعالج والذاكرة

    وعلي فكرة لم أكن أعلم ان هناك دالة php لعمل ذلك وجزيل الشكر





    __________________
    السيف أصدق أنباء من الكتب

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


    انا استخدم في الاضافة الدالة UNIX_TIMESTAMP() في الاستعلام مباشرة ويقوم باضافة التاريخ الحالي بصيغة ال unix
    لكن نوع الحقل ليس timestamp ، بل هو رقم int ، وحديثي هنا عن الحقول الخاصة بالوقت ( timestamp ) هو نوع الحقل في mysql ..

    يمكنك تخزين الوقت ب10 أرقام فقط عن طريق تحويله أولاً ب mktime
    بالتأكيد هناك العديد من الحلول ، لكن من جهتي فإنني سألتزم بإستخدام mysql نفسها للتعامل مع الوقت ، على الاقل في اسلوب التخزين ، بمعنى انني سأستخدم الحقول من النوع timestamp لتخزين الوقت ، مع ان الطريقة الثانية تؤدي الغرض الا انني اميل لهذه الطريقة ..

    شكراً لكم جميعاً ..





    __________________
    مدونة؟





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

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

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