!!!!!!!!!!!!!!!
انا أخبرك عن المعلومات المهمة
يجعني جروبات الأعضاء ( هذه مصفوفة )
التصنيفات ومعلوماتها ( هذه مصفوفة )
ملف اللغة ( هذه مصفوفة )
خيارات الموقع ( هذه مصفوفة )
كلهم ما يزيدو عن 9 ويكون حجمهم بالكثير جدا 5 ميجا يوم ما تكون مليان وملف اللغة بالألوف
خليتهم فجأة 50 ألف !!
ثم هذا ما يقوم به الهاك الرائع vboptimize لمنتديات الفيبولتن حيث يحول ملف اللغة والخيارات وكله للذاكرة مستخدما ال xcache فمن أين حكمت أنها طريقة خاطئة والكثير من المبرمجين المحترفين صاروا يستخدموها ؟
هل تعتقد أني جايب شئ من عندي أخي ولا مخترع شئ
كل هذا جلبته من الفيبولتن وهاكاتها وكلها أفكارة موجودة فعلياً في الفيبولتن التي لها كلاسات للتعامل مع 5 أنواع من الكاش
xcache
apc
eaccelerator
تخزين مباشر في الذاكرة
الملفات
وهو ما يستخدمه أيضا vbseo
إقتباس:
| بمعنى انك طالما طلبت المصفوفات سوف يتم تعريفها في PHP و البحث فيها مع كل تنفيذ للكود..
ترى هل هذه العملية اسرع ام البحث في الداتابيس؟ |
بالطبع هذه
أسرع بعشرات الأضعاف
يا عزيزي أنت حينما تحمل بيانات ملف اللغة من الداتا بيز يتم نقل البيانات للذاكرة أصلاً
لا تجادلني في أمر لم تدرسه ولم تعلم عنه شئ
أسأل أي مبرمج مبتدئ أيهما أفضل
تنفيذ 50ألف تعليمة سكول في اليوم
أم تنفيذ 0 !!
نعم جلب مجموعات الأعضاء والتصنيفات وغيرها مع كل زيارة هو أمر لا يقوم به الأن سوي المبتدئين مع إحترامي لهم
إقتباس:
| وبخصوص طريقة تعامل MySQL مع الداتا وفرزها هل يعقل انه لو عندك جدول 500 ميجا انها تنقله للرام؟ ومع كل يوزر |
شرحت لك 3 مرات وأنت لم تفهم وهذه ليست مشكلتي
قلت لك أنك حينما تطلب تعليمة لجلب بيانات العضو رقم 5
يتم البحث في قاعدة البيانات علي الهارد
ثم نقل جدول العضو رقم 5 فقط للذاكرة
يعني الجدول الناتج والموجود فيه إسمه وبريده إلخ
هل فهمت أم أشرها بلغة أخري !!
إقتباس:
| لا بالطبع عزيزي ما اعرفه انها تبحث فقط ضمن الحقل المحدد لها وهو هنا ال username ولا اعرف ان كانت تنقله للرام كاملا ام لا. |
ناتج الكويري يتم نقله علي الفور للذاكرة لتبدأ اللغة التي تستخدمها وهي في حالتنا php بالتعامل مع ذلك الناتج بالعمليات المنطقية والحسابية المطلوبة
ثم بعد الإنتهاء تقوم أليا ( ليس كل ال DBMS ) بتفريغ الذاكرة من ذلك الناتج
ولهذا فأنت تقوم بعمل free بعدما تنتهي من الكويري لتقوم بتفريغ الذاكرة من المحتوي
لما تفرغ الذاكرة ما دامت البيانات تأتي من الهارد !!
لهذا سألت من قبل الأستاذ العزيز عبدالله عيد هنا عن هل أقوم بعمل free أم لا قال لي لا تهتم فكلاس التعامل مع ال mysql في ال php تقوم بذلك ألياً
لا أدري كيف شئ مبدأي في عالم البرمجة مثل هذا ولا تعرفه رغم أني أعتبرك من أصحاب الخبرة !!
إقتباس:
| ثم بعد النجاح تحدد الاجزاء التي طلبتها من الجدول وترجعها لك.. لكن لا اعتقد ان الجدول ينقل كاملا للذاكرة. |
هات لي نص واحد قلت فيه ان الجدول كله ينقل للذاكرة
قلت لك الجدول الناتج
يعني جرب تدخل phpmyadmin
وتنفذ تعليمة فيها join تجلب من أكثر من جدول
ستجد ال phpmyadmin أظهر لك جدول جديد طويل جدا فيه كل البيانات
هذا الجدول الظاهر أمامك موجود في الذاكرة الأن ويتم التعامل معه من الذاكرة ويمكنك تحميل محتواه داخل مصفوفة ( هذه المصفوفة ستكون في الذاكرة أيضاً ) ثم تفرغ محتوي الكويري ( والذي سيفرغ المحتوي من ال address القديم ومعه بيانات تلك الكويري والتي يخزنها ال DBMS ) ويصبح لديك مصفوفة واحدة وهي ما حملت فيها الناتج ولا تحمل معها أية بيانات أخري
هذه المصفوفة يمكنك تخزينها بشكل دائم في الذاكرة لو كانت كثيرة الجلب من قاعدة البيانات
هذا هو ما قصدته
فقط المصفوفات كثيرة الجلب مثلما تفعل البرمجيات المتقدمة
مثل ملف اللغة
القوالب لو كانت في قواعد البيانات
المجموعات
الخيارات
التصنيفات
الهووك بأسمائها وارقامها
إلخ
كلها ما تزيد عن 10 مصفوفات يتم جلبها بكثرة رغم ان محتواها لا يتغير إلا نادراً فلتوفير تكرار تعليمات السكول كل مرة يتم تركها في الذاكرة بشكل دائم بواسطة المسرعات او تخزينها علي الهارد بواسطة كاش الملفات ( الأولي ستكون أسرع بالطبع )
إقتباس:
| وايضا ماذا عن هيئة وشكل تخزين البيانات على الرامة؟
وهل تفضل تخزين كل بيانات الكاش على الرام بدون استخدام اي شيء اخر؟ |
لم أفهم !!
عموما تعاملي مع الكاش وحسب الخبرة التي اكتسبتها من تلك البرمجيات يكون بنوعين
النوع الأول وهو المعلومات كثيرة الولوج وقليلة التحديث وهي التي ذكرتها بالأعلي
هذه أخزنها في الذاكرة بواسطة xcache ثم أكتب لكل واحدة منهم دالة تحديث وأناديها وقتما يحدث عليها تحديث ( هم يفعلون ذلك ولو تريد أسماء الدوال أجلبها لك )
ثم البيانات متوسطة الولوج مثل الإحصائيات فهيه أخزنها أيضا في الذاكرة كونها لا تتعدي الكيلو بايت في حجمها وأكتب لها دالة أناديها كل زمن محدد وليكن كل ساعه فأوفر عمل تعليمة سكول لجل إحصائيات الموقع تحدث كل زيارة لفقط 24 مرة في اليوم
فبدلاً من 50000 مرة تكون 24 مرة !!
أما قليلة الولوج فهذه أتركها تعليمة سكول وممكن أتفنن قليلاً وأستخدم نظام الملفات خاصة لو كانت المعلومات كثيرة
فمثلاً موقع أخبار الزيارات تكون أكثر علي الأخبار الجديدة فأخلي الأخبار الجديدة فقط يتم تكيشها علي الهارد ولمدة محددة وليكن يوم
التعامل يكون علي حسب كل كويري علي حدي
مع العلم أني وجدت نظام أخر تستخدمه البرمجيات الكبيرة
وهو البعد التام عن تعليمات السكول update وإستخدام جداول إفتراضية
فبدلاً من تحديث بيانات الموضوع مع كل زائر في كل زيارة
يتم مع كل زائر يدخل عمل تعليمة insert في جدول إفتراضي
هذه التعليمة يكون فيها رقم القسم اللي تم زيارته
ورقم الموضوع
وإسمه و ال ip إلخ مع الزمن الحالي اللي أدخلت فيه التعليمة لقاعدة البيانات
وكل ساعه عن طريق المهام يتم جلب البيانات من هذا الجدول
ومعالجتها بالبرمجة لتحديد كل قسم تم زيارته كم مرة وكل موضوع كم وكل عضو كم فينتج لنا القسم الفلاني تم زيارته الساعه السابقة 15 مرة
فنزود إحصائيات القسم دفعة واحدة ب 15 في تعليمة واحدة
هذا النظام موجود في كل البرمجيات الإحترافية ويكون إختياري
مثلا الفيبولتن موجود فيها ولكنه بخيار من لوحة التحكم ومكتوب في وصفه ( ينصح به للمنتديات الكبيرة )
فهناك أيضا لتقليل الحقول في الصلاحيات إستخدام الارقام ال binary لما تتمتع به من الثنائية ( إما 0 أو 1 ) فيمكنك إستخدامها في الصلاحيات yes - no
وهناك الكثير فقط قلب البرمجيات المشهورة والعالمية لتتعلم منهم
لدي الكثير لأقدمه لكن لو كل معلومة سيتم مجادلتها بهذه الطريقة لمجرد رفضها فأعتقد أني سأمل بشكل مبكر !!
خاصة وأن خبرتي ليست كبيرة فعمري في البرمجة لا يتجاوز ال 8 أشهر وليس لدي طول النفس الموجود عند أصحاب ال 5 سنوات خبرة