سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو مميز
#1  
تحليل : كيف تبرمج موقع مثل رتب

السلام عليكم

سأكتب علي السريع بعض الخواطر في تحليل برمجة موقع إحصائيات

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

ip ودقة الشاشة لديه والمتصفح ونظام التشغيل وووو إلخ

من المفروض انك مع كل زائر يدخل الموقع ستقوم أولاً بتحديد عبر ال ip هل هذا الزائر زار هذا الموقع فقط من قبل أم لا

لو كان زاره نزيد ال page views له بصفحة
لو لم يكن زاره نزيد ال visitors للموقع ب 1
بالطبع مع إخدال بياناته كاملة في حقل لجدول مخصص في الداتا بيز

بالطبع انت لو ظللت تعمل هذه العملية مع كل زائر فثق تمام الثقة ان برمجيتك ستفشل
فتخيل معي لضبط الأمور كلها فأنت تحتاج علي أقل تقدير ل 5 كويري مع كل صفحة مستعرضة قد تصل لعرض إحصائيات شاملة لأكثر من ذلك لفحص بياناته القديم وهل تكرر ام لا وتحديث بياناته هو وتحديث بيانات الموقع نفسه إلخ ( مع العلم انك تقوم بالفحص داخل نتائج بالملايين )

هذا غير ما سيتم عمله فيما بعد ال 24 ساعه من ضبط إحصائيات الموقع نفسه الإجمالية قبل عرضها

وهذا أمر من الصعب جدا تحمله خاصة وأنت ستقدم إحصائيات لمواقع سيكون عدد زوارها إجمالاً أكثر من مليون زائر يومياً

لهذا فإن أفضل الحلول لهذه العملية هي كالتالي

مع كل زائر يزور الصفحة نعمل كويري واحدة فقط وهي insert ( هذه التعليمة من أخف التعليمات )

ندخل فيها بيانات العضو كاملة مع ال ip والموقع الموجود فيه حاليا والصفحة إلخ

يتم معالجة البيانات بطريقة من 2

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

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

بعد نهاية الحسبة ندون النتائج ونحذف القديمة فستكون الجديدة أقل بكثير من القديمة التي حذفنا منها كل التكرارات

بعد مرور 24 ساعة نأخذ النتائج الكاملة مرة أخري ونكرر معها نفس العملية السابقة ولكن ستكون العملية علي نتائج أقل مما لو تركنا الأمر كله لما بعد ال 24 ساعة

هذا العمل سيكون أخف جدا علي السيرفر ولكنه في نفس الوقت أكثر تعقيداً برمجيا كما أنه اي خطأ في اي مرة من المرات ستؤدي في الغالب لضياع إحصائيات ساعة كاملة
ولو كان لديك نظام لتحري الأخطاء وإعادة الحساب لو حدثت فأنت مع اي خطأ سيتزيد حمل إضافي للمزود ليعيد العمل


2- يتم العمل كل 24 ساعة فقط مع تقسيم العمل علي سيرفرين مثلاً أو عمل delay time بين كل 100 ألف حقل مثلاً
الأفكار كثيرة

مثلاً يتم جلب البيانات من الداتا بيز وتخزينها كل 100 ألف حقل في ملف منفصل مرقمة من 1 ل ...... النهاية
بعد الإنتهاء من تخزين كل نتائج الزوار خلال اليوم السابق في ملفات منفصلة ويتم ذلك بالطبع بكويري تجلب 100 ألف ثم تخزنها ثم delay time وهكذا حتي لا تزيد الحمل في ذلك الوقت علي السيرفر

بعد الإنتهاء تتصل علي سيرفر أخر سنسميه سيرفر الحساب فارغ ومعد فقط لحساب الإحصائيات وترسل له كافة الملفات بعد ضغطها

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

بعد الإنتهاء تماماً يرسل إحصائيات كل موقع فقط وليس تلك البيانات التي انتهي من حسابها للسيرفر الأول المخصص للإحصاء ليبدأ هذا السيرفر في عرضها

او قد يكون الموقع نفسه علي سيرفر ثالث بمعني

الموقع علي سيرفر وهو ما تدخله انت كصاحب موقع او زائر لتتصفحه وتستعرض النتائج
الصفحة التي تحسب الزوار وتدخل بياناتهم قاعدة البيانات علي سيرفر ثاني يسمي سيرفر الإحصاء <<< الحمل كله والشغل كله هنا وقد تحتاج لأكثر من سيرفر

الحساب للإحصائيات علي سيرفر ثالث يسمي سيرفر الحساب او علي سيرفر الموقع نفسه الأول والذي لا يكون عليه حمل فموقع رتب حسب ما أذكر زواره 25 ألف زائر فقط وليس صعب ان تزيد الحمل علي هذا السيرفر في العمليات الحسابية

أفكار :-

1- يمكنك إستخدام أكثر من سيرفر بدون كلاستر ولا أي هم من هموم الشبكات عن طريق وضع البرمجية الحاسبة للإحصائيات ( التي كانت علي سيرفر الإحصاء ) علي أكثر من سيرفر كل سيرفر له دومين فرعي مرقم مثلاً

srv1.example.com
srv2.example.com
srv3.example.com

إلخ

وحينما يقوم صاحب موقع بالتسجيل ليستخدم إحصائياتك تخرج له أحد روابط الحساب لإحدي هذه السيرفرات بشكل عشوائي ( نفس فكرة إستخدام أكثر من سيرفر لمركز تحميل ورفع الملفات علي أي سيرفر بشكل عشوائي ليكون التحميل فيما بعد عليه دائماً وهي فكرة تستخدما كل المواقع الكبيرة بلا إستثناء في التعامل مع موقعها )

مما يعني انه الموقع اللي هيتم إعطائه كود الإحصائيات واللي يستخدم ملف سيكون مثلا هكذا

srv1.example.com/getdata.php

سيكون حساب إحصائياته دائما علي هذا السيرفر

تقوم كل السيرفرات بنفس العملية كل 24 ساعة في إرسال حقولها للسيرفر الخارجة ليحسب كل شئ ويعرضه في الموقع لأصحاب المواقع

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

2- يمكنك علي سيرفر الحسابات الذي يتلقي الملفات من سيرفر الإحصاء ان تترك البيانات التي جائته في ملفات في قاعدة البيانات بحيث لو حدث خطأ في الإحصائيات يمكنك طلب إعادة حسابها منه وهنا يظهر لك بعض مواقع الإحصائيات التي قد تعلن انها ستتأخر في عرض إحصائيات اليومين السابقين
او أن الإحصائيات حدث فيها خطأ ولكنها ستعرض الأرقام الصحيحة فيما بعد

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


3- ليس شرط أن يقوم موقع الإحصاء كل 24 ساعة بتوريد إحصائياته في ملفات وإرسالها لسيرفر الحساب بل من الممكن ان تجعل سيرفر الحساب نفسه هو من ينادي API علي سيرفر الأحصاء ويطلب منه الداتا 100 ألف حقل ب 100 ألف مثلاً وكلما أنهي جزء ينادي علي الباقي ليكمل مع تخزين كل ما جلبه لديه كما وضحت حتي لا تضيع البيانات فيخزنها أولاً لديه ثم يبدأ في الحساب لها ثم يدون نتائجه وهكذا حتي ينتهي

4- يمكنك ان تكتب دالة تنادي هذه الدالة نفسها كلما كان اللود عالي فتفحص اللود لو كان عالي تقوم بعمل delay time عن طريق sleep ثم تنادي نفسها وهكذا فلو قل اللود لا تنادي نفسها وتكمل عمل الإحصائيات وتضع هذه الدالة داخل لوب حساب الإحصائيات علي سيرفر الإحصاء بحيث تقلل إمكانية حدوث خطأ حينما يزداد اللود فيعطل حسبة البيانات او تمر بعض الداتا بدون حساب

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

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



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






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 27-05-2009, 06:43 AM
الرد مع إقتباس
عضو سوبر نشيط
#2  

فكر رائع جدا اخي المجروح ..
لدي سؤال هام في موضوع عمل العمليات الحسابية على البيانات بعد تخزينها كلها بمصفوفة بدلا من عملها مباشرة على قواعد البيانات ..
اعتقد اني فكرت بهذه الفكرة سابقا .. مثلا هل اذا كان لدي 10 استعلامات ساجلبها من جدول واحد مع اختلاف قيمة حقل واحد فقط (كفكرة المقالات والاقسام) يكون هناك حقل لرقم القسم في جدول المقالات ..
هل من الافضل جلبها في 10 استعلامات ام جلب الكل في مصفوفة ثم يتم فرزها على حسب هذا الحقل وترتيبها على حسب حقل آخر .. علماً بأن النتائج قد تصل الى مليون نتيجة.

ثانياً لا اعلم ان كانت ال mysql تتحمل ملالاين النتائج ام لا .. خصوصاً اني تعاملت سابقا مع جداول بحجم 2 مليون نتيجة وعند تنفيذ اي استعلام فيها كانت تميت السيرفر وترفع اللود بطريقة سيئة و تأخذ وقت طويل جدا في الاستعلام.
كما اعتقد ان آلية الحساب هذه بسيطة والعمليات الحسابية كذلك لحساب الاحصائيات هي كثيرة لكنها بسيطة وتستطيع عملها بسهولة .. لكن الفن في ان تحصل على النتائج باقل وقت ممكن و باقل جهد على السيرفر.
لهذا وجهت لك سؤالي الاول






__________________
قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير
مهندس مصرى is offline   قديم 27-05-2009, 11:55 AM
الرد مع إقتباس
عضو نشيط
#3  

عزيزي مثل هذا العمل

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

او دعني اطرح لك مثال

البيك اب كم سرعته لما يوكن من ملف فاعتقد والله اعلم انه يتم استخدام نظام الملفات

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






__________________
اللهم لا علم لنا الا ما علمتنا انك انت العليم

http://shareID.info



PHP0 is offline   قديم 27-05-2009, 03:47 PM
الرد مع إقتباس
عضو مميز
#4  

إقتباس:
المشاركة الأصلية بواسطة مهندس مصرى مشاهدة مشاركة
فكر رائع جدا اخي المجروح ..
لدي سؤال هام في موضوع عمل العمليات الحسابية على البيانات بعد تخزينها كلها بمصفوفة بدلا من عملها مباشرة على قواعد البيانات ..
اعتقد اني فكرت بهذه الفكرة سابقا .. مثلا هل اذا كان لدي 10 استعلامات ساجلبها من جدول واحد مع اختلاف قيمة حقل واحد فقط (كفكرة المقالات والاقسام) يكون هناك حقل لرقم القسم في جدول المقالات ..
هل من الافضل جلبها في 10 استعلامات ام جلب الكل في مصفوفة ثم يتم فرزها على حسب هذا الحقل وترتيبها على حسب حقل آخر .. علماً بأن النتائج قد تصل الى مليون نتيجة.

ثانياً لا اعلم ان كانت ال mysql تتحمل ملالاين النتائج ام لا .. خصوصاً اني تعاملت سابقا مع جداول بحجم 2 مليون نتيجة وعند تنفيذ اي استعلام فيها كانت تميت السيرفر وترفع اللود بطريقة سيئة و تأخذ وقت طويل جدا في الاستعلام.
كما اعتقد ان آلية الحساب هذه بسيطة والعمليات الحسابية كذلك لحساب الاحصائيات هي كثيرة لكنها بسيطة وتستطيع عملها بسهولة .. لكن الفن في ان تحصل على النتائج باقل وقت ممكن و باقل جهد على السيرفر.
لهذا وجهت لك سؤالي الاول
كما وضحت أخي ان العقدة كلها في معالجة البيانات وليس في تسجيلها من كل موقع
معالجة البيانات بأقل عدد ممكن من الدوال والحمل هو الفن

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

يتم في ذلك تقليل التعليمات بشكل كبير
فتخيل زار الموضوع خلال الساعة 1000 فأنت عملت 1000 تعليمة update
أفضل من ذلك تعمل 1000 تعليمة insert علي جدول إفتراضي
وكل ساعة تجعلب هذه الألف نتيجة وتعالجها فتعمل تعليمة واحدة فقط update لتزيد المشاهدة بمقدار 1000

طبعا مع عدد كبير من الموضوع تكون العملية فعالة بشدة

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

مع فكرة ثالثة هامة جداً وهي ركن التعليمات علي الأماكن الأقل بدلاً من الأعلي
فبدلاً من جلب عدد ردود الموضوع مع كل زائر يدخل لتعرض له عدد الردود في الداخل توفر هذه التعليمة بحقل زيادة لكل موضوع تزوده بمقدار واحد مع كل رد وبالتالي لو كان هناك 100 رد فتم تنفيذ التعليمة 100 مرة بدلاً من تنفيذها بعدد زوار الموضوع والذي قد يتجاوز ال 20 ألف

هذه الأفكار قد يوصلوا برمجيتك لحد دون ال 4 تعليمات في الصفحة الواحدة من الصفحات اللي عليها ضغط زوار






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 27-05-2009, 04:10 PM
الرد مع إقتباس
عضو فعال جدا
#5  

دائما كنت أتسائل لماذا لا تقدم موقع الاحصائيات احصائياتها بشكل فوري
شكرا لك علي التوضيح






سحاب اون لاين is offline   قديم 27-05-2009, 04:31 PM
الرد مع إقتباس
عضو مميز
#6  

إقتباس:
المشاركة الأصلية بواسطة سحاب اون لاين مشاهدة مشاركة
دائما كنت أتسائل لماذا لا تقدم موقع الاحصائيات احصائياتها بشكل فوري
شكرا لك علي التوضيح
الإحصائيات الفورية لا تكون دقيقة فهي قد تحسب الزائر عدة مرات
فلو دخل الزائر 8 مرات متفرقة في اليوم يتم حسابه 8 مرات مختلفة

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

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

ولكن هذا لا دخل له في الإحصائيات اليومية بالطبع






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 27-05-2009, 06:02 PM
الرد مع إقتباس
مراقب
#7  

السلام عليكم

موضوع رائع

صراحه انا معجب جداً بتميزك الفتره الاخيره

وكل مواضيعك فيها نقاشات جاده

الا انني ارى فيك بعض الاحيان الشده في النقاش فحاول تهدي اعصابك شوي بها

ونظراً لتميزك لك عضوية امتياز لمدة سنه مجانيه

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


* انصحك بالا






__________________
جدة بايكرز - العاب - العاب بنات - العاب سيارات - صور - مركز تحميل
محلل لنظم المعلومات - راسلني او ارسل لي رساله خاصه عبر المنتدى | join me on facebook / twitter
php | flash&flex&air actionscript 2,3 | ajax&javascript | database pro Analyzer
محمد الثقفي is online now   قديم 27-05-2009, 06:59 PM
الرد مع إقتباس
عضو نشيط
#8  

موضوع أكثر من رائع أخي المجروح وتحليل قيم للغاية.

مبروك عضوية الإمتياز






__________________
اللهم وفقني لما تحبه وترضاه...
Mostafa Maher is offline   قديم 27-05-2009, 08:21 PM
الرد مع إقتباس
عضو سوبر نشيط
#9  

ما شاء الله موضوع رائع ... و مبروك عضوية الامتياز يا بعدي






__________________
اللهم اغفر لي الذنوب التي تهتك العصم
اللهم اغفر لي الذنوب التي تنزل النقم
اللهم اغفر لي الذنوب التي تغير النعم
اللهم اغفر لي الذنوب التي تحبس الدعاء
اللهم اغفر لي الذنوب التي تنزل البلاء .
الأزهر is offline   قديم 27-05-2009, 08:27 PM
الرد مع إقتباس
عضو سوبر نشيط
#10  

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






__________________
قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير
مهندس مصرى is offline   قديم 27-05-2009, 08:59 PM
الرد مع إقتباس
عضو مميز
#11  

إقتباس:
المشاركة الأصلية بواسطة محمد الثقفي مشاهدة مشاركة
السلام عليكم

موضوع رائع

صراحه انا معجب جداً بتميزك الفتره الاخيره

وكل مواضيعك فيها نقاشات جاده

الا انني ارى فيك بعض الاحيان الشده في النقاش فحاول تهدي اعصابك شوي بها

ونظراً لتميزك لك عضوية امتياز لمدة سنه مجانيه

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


* انصحك بالا
الشدة جانب أحيانا من جوانب الإصلاح
هناك الكثير من الأدلة حدثت أمام النبي صلي الله عليه وسلم نفسه كان فيها عنف وسب مباشر ولكنه لم ينكرها
مثل قول سيدنا أبو بكر لأحد الأشخاص في إجتماع كانوا يريدون شئ لا يمكن عمله ( أمصص بظر اللات )

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

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

عموما ليس هذا حديثنا حتي لا يتشتت الموضوع

جزيل الشكر






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 27-05-2009, 09:40 PM
الرد مع إقتباس
عضو فعال جدا
#12  

الف مبروك اخي .. عقبال الاشراف






سحاب اون لاين is offline   قديم 27-05-2009, 10:33 PM
الرد مع إقتباس
مشرف قسم PHP
#13  

إقتباس:
المشاركة الأصلية بواسطة سحاب اون لاين مشاهدة مشاركة
الف مبروك اخي .. عقبال الاشراف
لو سمحت لا تهدد أمن الدولة

ههههه يستاهل المجروح ، متابعين الموضوع بصمت ..

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






__________________
# اتبعني على Twitter
أشرف السمهوري is offline   قديم 27-05-2009, 11:20 PM
الرد مع إقتباس
عضو مميز
#14  

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

ولكني كنت اظن هذه الأمور هامشية كوني لم ادرسها ولا يوجد لها كتب ولكني احلهها بالتتبع

مثلا موقع بلوجر حينما تحرر فيه التصميم يظهر التعديل علي الفور
ولكن بعد فترة يتغير التعديل لو كان فيه فلاش يتعطل

كيف ذلك ؟

يستخدموا نفس الفكرة هنا حيث لا يتم مع كل تعديل للتصميم إمرار القوالب علي دوال ال clean وبذلك سيكون الأمر مرهق بشدة
بل مع التعديل يدخل حقل في قاعدة البيانات ان صاحب المدونة الفلانية قام بالتعديل

انهي انت تعديلاتك ولو 100 مرة لن تمر علي ال clean
وكل وقت محدد يتم المرور وعمل clean لمرة واحدة فقط لكل القوالب التي حررها اصحاب المدونات

فتجد ان تصميمك تعطل بعدما كان يعمل

عموما مادامت هذه النقاط مفيدة فقد أكتب المزيد عنها بإذن الله






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 28-05-2009, 12:22 AM
الرد مع إقتباس
مراقب
#15  

لا تتفاجأ اخوي المجروح

التحليل مطلوب وبشده

توجهك للتحليل كما ارى من افضل مايكون

وتحليلك ممتاز جداً ومنطقي

اكمل في وضع مواضيع اخرى لتحليل محتوى اي فكره سواء جديده او قديمه

وبالطبع هذه المواضيع والنقاط مفيده جداً خصوصاً اذا كان عامل النقاش الهدف الاساسي منها






__________________
جدة بايكرز - العاب - العاب بنات - العاب سيارات - صور - مركز تحميل
محلل لنظم المعلومات - راسلني او ارسل لي رساله خاصه عبر المنتدى | join me on facebook / twitter
php | flash&flex&air actionscript 2,3 | ajax&javascript | database pro Analyzer
محمد الثقفي is online now   قديم 28-05-2009, 06:01 PM
الرد مع إقتباس
عضو نشيط
#16  

أعتقد أنك دارس برمجية vBulletin جيداً
فأتمنى إن vBulletin تكون عليها الدور في التحليل المرة القادمة.






__________________
اللهم وفقني لما تحبه وترضاه...
Mostafa Maher is offline   قديم 28-05-2009, 08:46 PM
الرد مع إقتباس
عضو مميز
#17  

إقتباس:
المشاركة الأصلية بواسطة Mostafa Maher مشاهدة مشاركة
أعتقد أنك دارس برمجية vBulletin جيداً
فأتمنى إن vBulletin تكون عليها الدور في التحليل المرة القادمة.
لا أخي لم أدرسها
كل ما في الأمر أني كنت أبرمج هاكات ليها لموقعي
فسقطت علي بعض الدوال من هنا وهناك
لدي موهبة وهي مجال عملي في الحقيقة
وهي تحليل الأمر من أول نظرة
ولكني انوي بعدما انهي مذاكرة ال php أن أبدأ في الإطلاع علي 5 برمجيات من البرمجيات العليا كدورابل وورد بريس إلخ
لأحصل علي أفكار برمجية فهذه البرمجيات مليئة

لكن لدي خبرة عن نظام الصلاحيات في فيبولتن وإستخدام النظام الثنائي مع ال &
توضع الصلاحيات في ملف xml لمضاعفات الرقم 2 ( كونها أرقام ثنائية فهي تسير بمضاعفات الرقم 2 كما تعلم - 1 2 4 8 16 32 64 128 256 إلخ )
وبالتالي يمكن مقارنة الرقم الخاص بالخيار وليكن 32 مع الرقم للصلاحيات الجماعية وهو رقم يكون كبير جدا وفيه تجمع كل الصلاحيات اللي أخترتها ( نعم )
وهذه توفر من وضع الصلاحيات في حقول منفصلة لكل خيار بنعم أو لا ( تخيل جدول فيه 100 عمود )

أيضا نظام الداتا ستور لتوفير تعليمات السكول بجلب الكثير من المحتويات في تعليمة واحدة فقد في بداية البرمجية مثل مجموعات الأعضاء إلخ

كما يمكن نقل كل هذا للكاش بإحدي الهاكات

أيضا نظام الهوك
نظام الخيارات و4 أنواع للخيار
نظام لوحة التحكم حيث توجد دوال لكل الأمور التي تريدها فقط تنادي دالة خيار إدخال text فيظهر لك حقل إدخال إلخ

هناك الكثير من الأفكار الرائعة لو أطلعت علي البرمجيات الكبري ستخرج بالكثير
ولهذا أنصح كل مبرمج بعد نهاية اللغة ومذاكرتها جيداً الإتجاه مباشرة لتلك البرمجيات لأخذ الأفكار
مازلت لم أقرأ السورس كود لهذه البرمجية بعد ولكني فهمت تلك الامور حينما مرت علي وقت برمجة الهاكات






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 28-05-2009, 09:01 PM
الرد مع إقتباس
عضو فعال
#18  

احييك على الموضوع الاكثر من رائع ، الصراحة القسم اصبح مليء بالمواضيع المفيدة .. نوعية المواضيع المطروحة اصبحت ارقى بمراحل

احييك اكثر على ملاحظاتك التي ذكرتها ، فقليل من يلاحظها .. وهم من لديهم القدرة على تتبع الامور بمنطقية وتحليل الانظمة حسب تفاعلها معك او its behavior

ولهذا دعنا نأخذ الموضوع بمزيد من التفصيل .. فرضا :
1- يتم تجميع كامل البيانات وتخزينها في الداتا بيز ومن ثم معالجتها في وقت لاحق ( 6 - 8 الصبح مثلا )
2- الموقع او تجميع البيانات يعمل على اكثر من سيرفر او عمل الموقع على اكثر من سيرفر عموما
3- تحديث البيانات وتحديث معلومات كل المواقع


يمكننا تقسيم المشروع إلى عدة مراحل اولها هي تجميع البيانات وتخزينها :
- يتم جلب ال ip والدقة وغيرها من المعلومات من الزائر بالصفحة
- يتم ارسالها إلى السيرفر المختص بتجميع البيانات ( ومن الممكن ان يكون سيرفر واحد centeral ويقوم بتوزيع الطلبات إلى اكثر من سيرفر )
- يتم التأكد من البيانات وصحتها
- يتم التأكد اذا كان هذا الطلب ( زيارة ) او ( زائر ) بمعنى هل تم احتساب الزائر فعلا من قبل وقد قام بفتح صفحة اخرى بالموقع .. ان انه زائر جديد يفتح الموقع لاول مرة اليوم مثلا او هذه الساعة << وهذه نقطة اخرى
وللتأكد من نقطة كهذه .. فلابد من استعلام للداتا وللاسف سيكون من النوع المخيف ، او يمكن استخدام السيشن .. ولكن للاسف عند فتح اي صفحة جديدة يتم تجديد كود الجافا سكربت وارسال request جديد للسيرفر المختص .. وبالتالي الحصول على session-id جديد .. ولكن يمكن وجود حل من خلال بدء السيشن من الجافا سكربت ومن ثم ارسالها مع ال request او البيانات ..

وليكن كالتالي
كود:
http://srv3.statistics.com/get.php?userid=...&ip=...&resolution=...&sessionid=.... ....

بعد التأكد اذا كانت هذا الطلب زيارة hit او زائر حقيقي visit يتم اضافة row جديد للداتا بيز فيه معلومات الزيارة والتي ستكون مثلا
id الموقع المشترك - رابط الصفحة - ip - resoltuion - الوقت - زائر حقيقي ام لا - واي بيانات اخرى يتم جلبها مثلا ..

hint : يمكن التوفير في حقل ال IP لأن عدد الزيارات من كل زائر محتمل ان تكون مرتفعة فعلى الاقل سيتصفح الزائر في موقع 3 صفحات .. وبالتالي 3 rows في الداتا بيز ممكن يعني ان حقل ال IP ( واحتمال اية حقول مشابهة ) ان تكون مكررة .. وبالتالي يمكن انشاء جدول مستقل للزوار وجدول للزيارات .. وكذلك يمكن تحول ال ip address إلى رقم من نوع long من خلال خوارزمية لا اتذكر اسمها .. ولكنها متوفرة في ال php من خلال الفنكشن ip2long و long2ip


وبهذا يكون قد وصلنا إلى النتيجة التالية :
لدينا مثلا 3 سيرفرات تقوم باستقبال البيانات من المواقع المشتركة .. وكل سيرفر يحتوي على داتا بيز بها بيانات لجميع زيارات وزوار المواقع المشتركة والتابعة لهذا السيرفر ( يكون هناك centeral database وتحوي جميع المواقع المشتركة .. وسيرفر محدد لكل موقع مشترك - وطريقة تحديد السيرفر من الممكن ان تكون random او squential او على حسب الدولة .. او اي شيء اخر )


ندخل في مرحلة تحديث البيانات :
فرضا سيكون هناك ملف ثابت في كل سيرفر مثلا update.php يقوم بجلب البيانات وتحليلها بحيث يقوم باخراج ارقام واحصائيات لكل موقع ( زيارات - زوار - صفحات - .. إلخ )
ويتم الاتصال بالسيرفر الرئيسي وتحديث بيانات كل موقع ( اضافة الاحصائيات لهذا اليوم \ الساعة \ ايا كان ) إلى الاحصائيات الكلية ( احصائيات تراكمية )



وآخر مرحلة هيعرض البيانات :
فعند دخول الزائر لموقع الاحصائيات رتب يكون التعامل فقط مع ال centeral database وال centeral server لن يكون هناك اي تعامل مع سيرفرات التجميع او المعالجة ..


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

- يمكن ادخال السيشنز في الموضوع او الاعتماد على البيانات في الداتابيز

- عملية تحليل البيانات من الممكن ان تتم من نفس سيرفرات التجميع ولكن بفترات مختلفة .. ومن الممكن ان يكون لها سيرفرات متخصصة ، وحينها يجب النظر لطريقة التعامل بين السيرفرين وتوفير بيئة مريحة لتبادل البيانات او الحصول من البيانات من هنا او هناك

- الاعتماد على ال API في التعامل الداخلي بين السيرفرات .. لا يمكن الاعتماد عليها فهي لا تصلح للضغط الكبير او الكميات الكبيرة من البيانات .. نظرا لأن كل single data row is considered a server request وبالتالي عدد ال requests سيكون كبير جدا .. لابد من توفير طريقة عملية اكثر واسرع للتعامل الداخلي بين السيرفرات المختصة للعمل في الخلفية


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


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



احييك مرة اخرى عالموضوع يا باشا واعذرني عالاطالة احببت ان اشارك بما لدي ..
تحياتي






__________________
Ahmed Ehab
أستاذ سوفت !
facebook me - tweet me
Egyptechno is offline   قديم 29-05-2009, 04:21 AM
الرد مع إقتباس
عضو نشيط
#19  

موضوع رائع
توجد اضافة في الووردبريس اسمها Wassup تعطي النتائج بشكل فوري
يمكنكم الاطلاع على طريقة عملها
WordPress › WassUp






__________________
اطلب تصميمك العصري
http://services.ar-tuts.com
دروس عربية تطوير تصميم تقنية .. ويب
www.ar-tuts.com
lacoom.net is offline   قديم 29-05-2009, 03:01 PM
الرد مع إقتباس
عضو مميز
#20  

إقتباس:
احييك على الموضوع الاكثر من رائع ، الصراحة القسم اصبح مليء بالمواضيع المفيدة .. نوعية المواضيع المطروحة اصبحت ارقى بمراحل

احييك اكثر على ملاحظاتك التي ذكرتها ، فقليل من يلاحظها .. وهم من لديهم القدرة على تتبع الامور بمنطقية وتحليل الانظمة حسب تفاعلها معك او its behavior

ولهذا دعنا نأخذ الموضوع بمزيد من التفصيل .. فرضا :
1- يتم تجميع كامل البيانات وتخزينها في الداتا بيز ومن ثم معالجتها في وقت لاحق ( 6 - 8 الصبح مثلا )
2- الموقع او تجميع البيانات يعمل على اكثر من سيرفر او عمل الموقع على اكثر من سيرفر عموما
3- تحديث البيانات وتحديث معلومات كل المواقع


يمكننا تقسيم المشروع إلى عدة مراحل اولها هي تجميع البيانات وتخزينها :
- يتم جلب ال ip والدقة وغيرها من المعلومات من الزائر بالصفحة
- يتم ارسالها إلى السيرفر المختص بتجميع البيانات ( ومن الممكن ان يكون سيرفر واحد centeral ويقوم بتوزيع الطلبات إلى اكثر من سيرفر )
- يتم التأكد من البيانات وصحتها
- يتم التأكد اذا كان هذا الطلب ( زيارة ) او ( زائر ) بمعنى هل تم احتساب الزائر فعلا من قبل وقد قام بفتح صفحة اخرى بالموقع .. ان انه زائر جديد يفتح الموقع لاول مرة اليوم مثلا او هذه الساعة << وهذه نقطة اخرى
وللتأكد من نقطة كهذه .. فلابد من استعلام للداتا وللاسف سيكون من النوع المخيف ، او يمكن استخدام السيشن .. ولكن للاسف عند فتح اي صفحة جديدة يتم تجديد كود الجافا سكربت وارسال request جديد للسيرفر المختص .. وبالتالي الحصول على session-id جديد .. ولكن يمكن وجود حل من خلال بدء السيشن من الجافا سكربت ومن ثم ارسالها مع ال request او البيانات ..

وليكن كالتالي
كود:

http://srv3.statistics.com/get.php?u......&sessionid=.... ....


بعد التأكد اذا كانت هذا الطلب زيارة hit او زائر حقيقي visit يتم اضافة row جديد للداتا بيز فيه معلومات الزيارة والتي ستكون مثلا
id الموقع المشترك - رابط الصفحة - ip - resoltuion - الوقت - زائر حقيقي ام لا - واي بيانات اخرى يتم جلبها مثلا ..

hint : يمكن التوفير في حقل ال IP لأن عدد الزيارات من كل زائر محتمل ان تكون مرتفعة فعلى الاقل سيتصفح الزائر في موقع 3 صفحات .. وبالتالي 3 rows في الداتا بيز ممكن يعني ان حقل ال IP ( واحتمال اية حقول مشابهة ) ان تكون مكررة .. وبالتالي يمكن انشاء جدول مستقل للزوار وجدول للزيارات .. وكذلك يمكن تحول ال ip address إلى رقم من نوع long من خلال خوارزمية لا اتذكر اسمها .. ولكنها متوفرة في ال php من خلال الفنكشن ip2long و long2ip
كل هذا لا حاجة له علي الإطلاق أخي فهو عبئ زائد مع كل زائر يدخل لفحص هل هو زائر ام زيارة متكررة

ادخل فقط معلوماته لقاعدة البيانات بدون أية عمليات نهائي
مع التوقيت

وحينما تجلب المعلومات لترسلها للسيرفر المرتاح ( يعمل علي الحسابات فقط )
أدرس كل ip علي حدي ومن خلال التايم ستحدد هل كانت زيارة جديدة ام صفحة قلبها

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

مثلاً انت ستسجل دخول لمليون زائر تصفحوا بمعدل 50 مليون صفحة مستعرضة
لو زودت عملية واحدة فأنت أزدت علي السيرفر حملها 50 مليون مرة

لهذا أبتعد تماماً عن أية فلسفة مع أخذ بيانات العضو

وكثف فلسفتك كلها في وقت الحساب للبيانات فهي الشغل كله والعبقرية كلها في التعامل مع هذه البيانات

أشوف أفضل سياسة للتعامل مع الوضع كما وضحت

- عند تسجيل موقع لدينا في موقع الإحصائيات نولد له كود عشوائي

مثلاً لنفترض ان الملف الذي يقوم بأخذ بيانات من يفتحه ويدخلها لقاعدة البيانات إسمه
prepare.php
لو لدينا 3 سيرفرات سيكون كالتالي

srv1.example.com/prepare.php
srv2.example.com/prepare.php
srv3.example.com/prepare.php

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

نعطيه رابط عشوائي وليكن
srv2.example.com/prepare.php

الأن هذا الموقع بشكل دائم ستتم إحصاء زواره علي السيرفر رقم 2

كل زائر سيدخل موقعه يتم قراءة بياناته وبيانات الموقع الحالي وصفحته الحالية والصفحة التي قدم منها ثم كويري واحدة فقط
insert لتدخل البيان في قاعدة البيانات

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

هناك سيرفر بعيد كما أسمينا سيرفر الإحصاء سيقوم كل يوم في وقت محدد بالإتصال علي السيرفر الأول من خلال API ويطلب منه من ذا الجدول أول 100 ألف حقل
ويأخذهم ويخزنهم لديه أولاً لتكون مرجع كما بينت لو أخطأ في الحسبة فيما بعد ثم يعالجهم ثم يخزنهم مرة أخري في جدول أخر خاص بالبيانات النهائية
يطلب 100 الف أخري ويعالجها ويخزنها إلخ

حتي ينتهي يأخذ البيانات 100 ألف ب 100 ألف مرة أخري ولكن هذه المرة من الجدول الداخلي المعالج حتي يقلص الحقول لأبسط عدد ممكن بحذق التكرارات ( هذه العملية شبيهة بعمل أناليزس لقواعد البيانات فهي تدخل في عدة مراحل متتالية تسمي ال normalization كل مرحلة نحذف معها نوع معين من التكررارات حتي نوفر أفضل نظام لتخزين الداتا في قواعد البيانات )

فالزائر يحسب مرة واحدة كزائر جديد
وعدد مرات الكويري لموقع ما هي عدد مرات الصفحات المستعرضة للموقع
وعدد مرات الصفحات المستعرضة لكل زائر هي مجموع الكويري لل ip له إلخ

كلها تعامل مع مصفوفات بدوال المصفوفات العادية

بعد الإنتهاء يكرر العملية بالإتصال علي السيرفر الثاني
ثم الثالث
وبعد الإنتهاء من الكل يرسل النتائج النهاية التي دونها لديه للموقع ليتم عرضها لأصحاب المواقع

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

بالطبع في صفحة prepare.php أرفض فيها حساب الزائر لو كانت الصفحة الحالية له frame
او لو كان الموقع الموجود فيه الكود حالياً ليس الموقع صاحب الرقم التعريفي

إلخ
حتي لا يحدث غش من أصحاب المواقع
كل هذه العمليات أختصر فيها بشدة الدوال وأهتم بكل ما هو خفيف منها ولا تتصل علي قاعدة البيانات فأنت ستحدد مع كل زائر هل تقوم بعمل insert أم لا تقوم بذلك فقط
كويري واحدة بإختصار






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 30-05-2009, 11:08 AM
الرد مع إقتباس
عضو نشيط
#21  

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

موضوع أكثر من رائع وأنا أستفد من الأفكار الى تطرح

أخى المجروح سابقآ مبروك مبروك على نقل العضوية , أرجو المشاركة فى هذا الموضوع http://www.swalif.net/softs/swalif45/softs264276/






tech is offline   قديم 03-06-2009, 06:30 AM
الرد مع إقتباس
عضو نشيط
#22  

موضوع قيم .. ومهمل من قبل كثير من السكربتات .. بغض النظر عن عملية حساب الإحصائيات مثل رتب ..

أذكر مرة من المرات قمت بعمل إحصائية لمجلة من المجلات وجدت أنها تقوم بـ أكثر من 50 إستعلام في المرة الواحدة مابين إدخال وإستعلام وتحديث .!!!!

هناك تعليمات خاصة بقواعد البيانات مثل CASE و IF والإستعلامات الفرعية وغيرها .. أعتقد لو أحسن أستخدامها لوفرت الكثير من الإستعلامات والعبئ على السكربت قبل السيرفر .. وأيضا إستخدام الفهرسة بشكل صحيح وإضافة بعض الحقول لتوفير بعض الإستعلامات لجلبها وغير ذلك ..

الأفكار كثيره والأفضل هي التي تصل إلى النتيجة بأقل جهد وعبئ على الخادم .. ولا أعتقد أن يصل المبرمج إلى هذه المستويات إلا بالممارسة وقراءة أكواد البرامج الكبيرة مثل ما ذكرت أخي الكريم ..

شكرا لك على الموضوع ..






shoqi is offline   قديم 17-06-2009, 12:00 AM
الرد مع إقتباس
عضو نشيط جدا
#23  

تحليلك رائع ، أهم شيء للمواقع الضخمه هي تحليل فكرتها و تخطيطها قبل تنفيذها ، فكما أنت قلت الفكره بشكل عام سهله ، لكن الاختلاف في تنفيذها و تحليلها

بالتوفيق ،






__________________
أحمد عبد الفتاح
www.servmix.com
المبيعات : info@servmix.com
لمراسلتي : engahmed@servmix.com

• ليس اليتيم الذى قد مات والده ... بل اليتيم يـتـيـم العلـم و الأدب •

Eng/ Ahmed is offline   قديم 24-07-2009, 04:22 AM
الرد مع إقتباس
الرد على الموضوع



أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
هل يوجد موقع يقدم إحصائيات فورية مثل رتب alrhieb الويب والويب 2.0 والـ Semantic Web 2 11-03-2007 04:44 PM
هل ترغب في برمجة موقعك مثل رتب مجانا اكرر مجانا اجعل منافستك مع رتب اكثر قوة تفضل شركة مباشر عروض البيع وطلبات الشراء في البرمجة والتصميم وبناء المحتوى وتبادل الاعلانات 5 11-10-2006 11:07 PM
قنبلة لسوالف, سكريبت مثل رتب وترتيب , اصنع موقع احصائيات بنفسك Mr.Mido الويب والويب 2.0 والـ Semantic Web 29 19-09-2006 08:12 PM
من يبرمجلي موقع مثل رتب r66r عروض البيع وطلبات الشراء في البرمجة والتصميم وبناء المحتوى وتبادل الاعلانات 18 10-05-2006 06:29 AM
كيف تبرمج موقع الواب (الخاص بالجوال) aladawi الويب والويب 2.0 والـ Semantic Web 9 19-09-2004 02:10 PM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 08:17 PM.