مرحبا ..
بالنسبة للمستخدم البسيط (الذي احب ان اوجه هذا الموضوع له) فهو لا يعرف سوى ان يضغط في الصفحة على هذا الرابط ليخرج شيء ما، ويضغط على رابط اخر ليخرج شيء آخر في الموقع، .. هو لا يعرف سلسلة العمليات التي تحصل بسبب ضغطته وكيف يقوم الخبراء (امثالي) باعداد كامل السيناريو مسبقا ليخرج له ما توقع ان يخرج بسبب ضغطته، لذلك سنرتب الخطوات بهذه الطريقة، و هنا سوف ناخذ كمثال العضوة (تسواهن) كمستخدمة بسيطة (لا يوجد هكذا عضوة لدينا) :
.
- تقوم العضوة (تسواهن) بالضغط على رابط معين
- يقوم (المتصفح) بنقل الرابط مع اي معلومات اخرى مخزونة مسبقا (نسميها الكوكيز) ليرسلها إلى الموقع الذي يشير الرابط اليه
- يصل الرابط (مع باقي المعلومات) إلى السيرفر فيستقبله اولا برنامج متخصص اسمه (خادم الشبكة - Web server)، و في حالتنا اسمه Nginx
- يقوم خادم الشبكة (المخلص) باستقبال رابط تسواهن، ويحاول فحصه، فيرى إنه رابط ديناميكي (يعني رابط صفحة، وليس رابط صورة مثلا)
- لما يشاهد خادم الشبكة هذا (المخلص لان ينفذ ما قلته له سابقا بالحرف ويتحمل الكثير من العناء دائما) يقوم بالاتصال ببرنامج اسمه نسميه (خادم التطبيق)
- خادم التطبيق (الذكي) (في حالتنا هو برنامج مشغل لغة PHP) يقوم بالبحث عن الشفرة التي كتبت بها الصفحة التي يشير إليها الرابط، ويبدأ بتنفيذه
- يقوم خادم التطبيق بتنفيذ الكود المكتوب مسبقا لهذه الصفحة (الشفرة) سطرا بعد سطر، ويصادف في طريقه طلب معلومات من خادم مخلص اخر اسمه (خادم قاعدة البيانات)
- يتوقف التنفيذ في خادم التطبيق لينتقل إلى خادم قاعدة البيانات (وهذا نسميه الأمين لان أمين على المعلومات) ويبدأ سلسلة من الخطوات لتحضير البيانات التي طلبها خادم التطبيق
- يقوم الأمين (خادم قاعدة البيانات) بتجهيز البيانات ويعود بها إلى خادم التطبيق (الذكي) ليكمل تنفيذ سطور الشيفرة المكتوبة بلغة PHP)
- اذا صادف طلبات لبيانات اخرى، يقوم بالاتصال مجددا بخادم قاعدة البيانات كل مرة
- ينتهي خادم التطبيق من تنفيذ جميع سطور الشيفرة المطلوبة، و يجهز ما نسميه (كود الصفحة) او (المخرج) او (النتيجة) والتي تكون غالبا بلغة HTML و يرسلها إلى خادم الشبكة (المخلص)
- يفرح خادم الشبكة (المخلص) بوصول النتيجة، ثم يعود بها إلى المتصفح
- يقوم المتصفح بعرض الصفحة التي اعدها خادم التطبيق للعضوة تسواهن.
- تفرح تسواهن بفتح الصفحة وتسارع إلى كتابة تقييم للعضو (حمودي) او تطلب صداقة (علاوي) او تلمح تلميحا سلبيا (لحمزية)
- ترسل تسواهن المعلومات من جديد بنفس الطريقة لتعاد الخطوات السابقة
- حمزية التي انزعجت من تلميح تسواهن، تقوم بارسال (ابلاغ) للمراقبين لتعاد الخطوات السابقة
- تقوم سوزانا بمعالجة ابلاغ حمزية، و تقوم بارسال تنبيه إلى (تسواهن) لتعاد الخطوات السابقة
- يصل التنبيه إلى تسواهن، لتفتح فمها من الدهشة برسالة النائب، ثم تستجمع امرها وتقوم بكتابة اعتذار لتعاد الخطوات السابقة
- تعود سوزانا لمتابعة باقي التقارير عبر فتح صفحة منتدى التقارير، لتعاد ايضا الخطوات السابقة.
في اثناء هذه (العمليات التي تحدث بصورة متكررة) يحدث ان يتصل خادم الشبكة (المخلص) بخادم التطبيق (الذكي) ويجد خادم التطبيق غير موجود (راقد في المستشفى لسبب مجهول) فماذا يفعل ؟ يحزن، ويرسل خطأ للمستخدم الذي يكون رقمه هو (502) ووصفه Bad gateway، يعني الاتصال بالخادم اللاحق (الذي كان يجب ان يكون هو خادم التطبيق) لا يمكن تحقيقه،
يصادف خادم التطبيق (الذكي) احيانا عدم توفر خادم قواعد البيانات (الأمين) فماذا يفعل ؟ يرسل خطأ 503 ويعني إن الخدمة غير متوفرة
يصادف احيانا خادم التطبيق (الذكي) خطأ في الشفرة، فلا يستطيع الاكمال فيرسل خطا 500 وهذا يعني إنه قد حصل خطأ في السيرفر ولا يمكن الاكمال
يصادف احيانا خادم الشبكة (المخلص) رابطا يشير إلى محتوى غير موجود، (ديناميكي او ثابت مثل صورة غير موجودة) فماذا يفعل؟ يرسل خطا (404) وهذا يعني ان المحتوى غير متوفر
يصادف احيانا خادم الشبكة (المخلص) رابطا غير صحيح (كأن يكون طويل جدا، او فيه اخطاء متعمدة او غير متعمدة) فلا يستطيع معالجته، فيرسل خطا 400 وهذا يعني إن الطلب غير صحيح
اما اذا كان المحتوى موجود وكل شيء تمام، فانه يرسل رمز (200) للمتصفح، وهي الحالة التي نريدها ان تحصل دائما، لا يعرض المتصفح طبعا هذا الرقم، لان يعرض بدلا عنه النتيجة التي اتت من السيرفر.
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes