بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته ,,
فى هذا الموضوع سنتكلم عن تخزين النتائج مؤقتا او ال output buffering
فمثلا فى الحالة العادية مثل هذه الاوامر ستؤدى الى ارسال النتيجة الى المتصفح مباشرة
كود PHP:
<?php
echo 'testing';
print_r array('x' , 'y' , 'z');
?>
ولكن باستخدام خاصية التخزين المؤقت فى php فانه اصبح بامكانك حفظ هذه النتائج (بدلا من ارسالها للمتصفح) وبهذا يمكنك ارسال محتويات الصفحة دفعة واحدة فى نهاية السكريبت او تخزين محتوى الصفحة فى ملفات خارجية , بغرض عمل كاش للصفحة .
?>كود PHP:
<?php
ob_start(); // تفعيل التخزين المؤقت
echo 'testing';
print_r array('x' , 'y' , 'z');
///////
$buffer = ob_get_contents(); // اسناد النتائج التى قام تخزينها الى المتغير buffer
ob_end_clean(); // انهاء التخزين المؤقت
كما ترى فى هذا المثال رغم كتابة نفس اوامر الطباعة الا ان شيئا لن يظهر فى المتصفح وذلك نتيجة تفعيل التخزين المؤقت والذى بسببه سيتم تخزين اى نتائج بدلا من ارسالها للمتصفح,
والان يمكنك الحصول على النتائج باستخدام الدالة ob_get_contents ,
واخيرا يتم انهاء التخزين المؤقت باستخدام الدالة ob_end_clean
كود PHP:
<?php
// لدينا الان المتغير buffer
echo $buffer ; // سيقوم بطباعة ما تم تخزينه
/*--- تخزين الناتج فى ملف خارجى ---*/
$fp = fopen('cache.txt' , 'w+');
fwrite($fp , $buffer);
?>
وهكذا يمكنك طباعة الناتج فى اى وقت , مثلا فى نهاية السكريبت تقوم بطباعة النتائج دفعة واحدة , وايضا يمكنك تخزين الناتج فى ملف خارجى (لعمل كاش)
بقى الان ان نتعرف على اهم الدوال المستخدمة فى التخزين المؤقت (تعرفنا بالفعل على 3 منها)
كود PHP:
ob_start() // تفعيل التخزين المؤقت
ob_get_contents() // تقوم باعادة القيمة التى تم تخزينها
ob_end_clean() // تقوم بانهاء التخزين المؤقت
ob_end_flush() // تقوم بانهاء التخزين المؤقت مع طباعة ما تم تخزينه