السلام عليكم.
تحية طيبة للجميع. وبعد:
اريد شرح مبسط مع مثال سهل للفهم لهذه الدوال
اسفله بلغة php
ob_start ()
ob_end_flush ()
ob_end_clean ()
ob_flush ()
flush ()
وشكرا جزبلا...
وعليكم السلام،
هاته الدوال تتكامل فيما بينها وتتحكم في مراحل عملية تعرف بالـتخزين المؤقت للمخرجات output buffering وهي اختصار للجزء الأول من تسمية أغلب هاته الدوال.
فـمثلا: ob_start تبدأ هذا التخزين ob_get_contents تطبع ناتج محتويات هذا التخزين. وob_end_clean وob_flush توقف هذا التخزين وتمحوا ماكان مخزنا. ولكن ما الذي يعنيه أصلا التخزين المؤقت للمخرجات output buffering؟ ولماذا يجب علينا استعماله؟
في الحقيقة، يتم إرسال خرج موقعك (المعبر عنه بـناتج الـ HTML الذي تراه عند استعراض الصفحة) الخاص بك إلى المتصفح على شكل أجزاء مثل ما يُفعل عندما ننفذ برنامج PHP على الخادم المحلي. ولكن باستخدام هذا التخزين المؤقت للإخراج أو للمخرجات، يتم تخزين خرجنا للـ HTML في متغير وإرساله إلى المتصفح كقطعة واحدة. أي أن الأمر أشبه بتعريف هيكل HTML كامل في متغير وطباعته. أي أن العملية هاته:
<?php ob_start(); ?> <div> <span>text</span> <a href="#">link</a> </div> <?php $content = ob_get_clean(); ?>
أشبه بالمكافئة لـ:
<?php $content = '<div> <span>text</span> <a href="#">link</a> </div>'; ?>
ومنطقيا نستعمله لأنه يتم تقليل وقت تحميل الموقع أو القسم أو الصفحة التي تخزن مؤقتا قبل إرسالها للمتصفح. خصوصا تلك الأقسام والصفحات ومحتويات HTML الثابتة، فقد تحتاج مثلا لسرعة موقع أكبر إرسال نصف الصفحة الثابت إلى المتصفح وتخصيص ظهور النصف الآخر بحسب شروط وإستعلامات قواعد بيانات معينة مثلا.
وصحيح أنه لا فرق يلحظ مع أجزاء من الثانية في تطبيقات الويب العادية، ولكن تصبح العملية مبطئة ومزعجة عندما تزداد متطلبات موقعك أو موقع عميلك.
وبناءا على هذا المفهوم يمكن فهم دلالة كامل الوظائف التي تعرف بوظائف التحكم في الخرج Output Control functions ومن بينها تلك التي وصفتها وسأحاول ترتيبها لإعطاء دلالية أكثر:
.. أظن أنه الآن يمكنك تخمين ما الذي تعنيه ob_end_clean أيضا.
بارك الله في عمرك اخي عدنان.
حبذا لو ذكرت امثلة مع
php curl و php stream video
لان هذه السكربتات تكون ثقيلة و بطيئة في التنفيذ
وانا اريد مثال لتسريع السكربت بتلك الدوال حسب ماسمعت عنها.
وشكرا لك على الرد
التعليقات