هاته الدوال تتكامل فيما بينها وتتحكم في مراحل عملية تعرف بالـتخزين المؤقت للمخرجات output buffering وهي اختصار للجزء الأول من تسمية أغلب هاته الدوال.
فـمثلا: ob_start تبدأ هذا التخزين ob_get_contents تطبع ناتج محتويات هذا التخزين. وob_end_clean وob_flush توقف هذا التخزين وتمحوا ماكان مخزنا. ولكن ما الذي يعنيه أصلا التخزين المؤقت للمخرجات output buffering؟ ولماذا يجب علينا استعماله؟
في الحقيقة، يتم إرسال خرج موقعك (المعبر عنه بـناتج الـ HTML الذي تراه عند استعراض الصفحة) الخاص بك إلى المتصفح على شكل أجزاء مثل ما يُفعل عندما ننفذ برنامج PHP على الخادم المحلي. ولكن باستخدام هذا التخزين المؤقت للإخراج أو للمخرجات، يتم تخزين خرجنا للـ HTML في متغير وإرساله إلى المتصفح كقطعة واحدة. أي أن الأمر أشبه بتعريف هيكل HTML كامل في متغير وطباعته. أي أن العملية هاته:
ومنطقيا نستعمله لأنه يتم تقليل وقت تحميل الموقع أو القسم أو الصفحة التي تخزن مؤقتا قبل إرسالها للمتصفح. خصوصا تلك الأقسام والصفحات ومحتويات HTML الثابتة، فقد تحتاج مثلا لسرعة موقع أكبر إرسال نصف الصفحة الثابت إلى المتصفح وتخصيص ظهور النصف الآخر بحسب شروط وإستعلامات قواعد بيانات معينة مثلا.
وصحيح أنه لا فرق يلحظ مع أجزاء من الثانية في تطبيقات الويب العادية، ولكن تصبح العملية مبطئة ومزعجة عندما تزداد متطلبات موقعك أو موقع عميلك.
وبناءا على هذا المفهوم يمكن فهم دلالة كامل الوظائف التي تعرف بوظائف التحكم في الخرج Output Control functions ومن بينها تلك التي وصفتها وسأحاول ترتيبها لإعطاء دلالية أكثر:
ob_start: بدء أو تشغيل التخزين المؤقت للخرج.
ob_get_contents: إرجاع محتويات المخزن المؤقت للإخراج (في العادة تستعمل لتخزين الخرج في متغير).
flush: إرسال الخرج الذي هو مؤقت.
ob_end_flush: مسح الخرج المخزن وإيقاف عملية التخزين.
ob_flush - مسح المخزن المؤقت للإخراج.
.. أظن أنه الآن يمكنك تخمين ما الذي تعنيه ob_end_clean أيضا.
مجتمع لمناقشة وتبادل الخبرات حول تطوير الويب. ناقش أحدث التقنيات، اللغات، والأدوات في عالم تطوير المواقع والتطبيقات. شارك مشاريعك، اسأل عن نصائح، وتعاون مع مطورين محترفين وهواة.