يوفر PHP4.0 مجموعة من وظائف التخزين المؤقت للمخرجات. يتيح لك دعم التخزين المؤقت للإخراج كتابة الوظائف التي تغلف الوظائف حول المخازن المؤقتة المضغوطة. يسمح دعم التخزين المؤقت للإخراج في PHP4 بتخزين معلومات رأس HTML بغض النظر عما إذا كان نص HTML قد تم إخراجه أم لا. لكن في PHP، لا يتم تخزين معلومات الرأس ((header() ونوع المحتوى وملفات تعريف الارتباط) مؤقتًا.
في عملية استخدام PHP، لا مفر من استخدام header و
setcookie وظيفتان، سترسل هاتان الوظيفتان جزءًا من معلومات رأس الملف إلى المتصفح، ولكن إذا كان هناك أي إخراج (بما في ذلك الإخراج الفارغ، مثل المسافات وأحرف الإرجاع وخلاصات الأسطر) قبل استخدام هاتين الوظيفتين، فسيكون هناك خطأ تمت المطالبة، المعلومات الفورية هي كما يلي: "تم إرسال كل شيء إلى الرأس بواسطة"! . تمت إضافة العديد من الوظائف للتحكم في المخزن المؤقت إلى PHP 4.0، ويمكن أن يساعدنا استخدام هذه الوظائف في حل العديد من المشكلات.
اسم الوظيفة تنسيق الوظيفة وصف الوظيفة
يقوم Flush Flush() بإخراج محتويات المخزن المؤقت وحذف المخزن المؤقت. يتم استخدام هذه الوظيفة غالبًا وهي فعالة جدًا.
ob_start void ob_start(void) افتح المخزن المؤقت للإخراج. عندما يكون المخزن المؤقت نشطًا، لا يتم إرسال كافة معلومات رأس الملف من برنامج PHP، ولكن يتم حفظها في المخزن المؤقت الداخلي. لإخراج محتويات المخزن المؤقت، يمكنك استخدام ob_end_flush() أو استخدام ob_end_clean() لإخراج محتويات المخزن المؤقت.
سلسلة ob_get_contents ob_get_contents(void) تُرجع محتويات المخزن المؤقت الداخلي. تقوم هذه الدالة بإرجاع محتويات المخزن المؤقت الحالي، أو تقوم بإرجاع FALSE إذا كان المخزن المؤقت للإخراج غير نشط.
ob_get_length int ob_get_length(void) يُرجع طول المخزن المؤقت الداخلي. تقوم هذه الدالة بإرجاع طول المخزن المؤقت الحالي، مثل ob_get_contents، إذا كان المخزن المؤقت للإخراج غير نشط. إرجاع خطأ.
ob_end_flush void ob_end_flush(void) يرسل محتويات المخزن المؤقت الداخلي إلى المتصفح ويغلق المخزن المؤقت للإخراج. ترسل هذه الوظيفة محتويات المخزن المؤقت للإخراج (إن وجد).
ob_end_clean void ob_end_clean(void) احذف محتويات المخزن المؤقت الداخلي وأغلق المخزن المؤقت الداخلي. هذه الوظيفة لا تقوم بإخراج محتويات المخزن المؤقت الداخلي!
ob_implicit_flush void ob_implicit_flush ([int flag]) يقوم بتشغيل التدفق المطلق أو إيقاف تشغيله. أي شخص يستخدم لغة Perl يعرف معنى $|=x. يمكن لهذه السلسلة فتح/إغلاق المخزن المؤقت، والدالة ob_implicit_flush هي نفسها الافتراضي هو إغلاق منطقة المخزن المؤقت، وتشغيل الإخراج المطلق.
2. تحليل المثال:
1. استخدم وظائف التحكم في المخزن المؤقت لمنع الأخطاء في إرسال المعلومات في رأس الملف.
< // موجه PHP
ob_start(); // افتح المخزن المؤقت
صدى "مرحبًا / ن" ؛
header("location:next.php"); //أعد توجيه المتصفح إلى next.php
?>
إذا تمت إزالة ob_start، فسيظهر PHP خطأ في السطر 4 من الملف، وستكون رسالة الخطأ هي "تم إرسال كل الترويسة بواسطة". تم فتح المخزن المؤقت، والخطأ بعد الصدى لن يتم إخراج الأحرف إلى المتصفح، ولكنها ستبقى في المخزن المؤقت للخادم، ولن يتم إخراجها حتى تستخدم التدفق أو ob_end_flush، لذلك لن يكون هناك خطأ في رأس الملف. تم الإخراج!
2. احفظ المخرجات (هذا استخدام كلاسيكي جدًا).
لنفترض أنك تريد معرفة معلومات إخراج شاشة العميل، مثل نتائج إخراج الوظائف وما إلى ذلك، وستختلف معلومات الإخراج هذه اعتمادًا على العميل. يمكننا استخدام الدالة <?phpinfo(); ?> للحصول على معلومات إعداد الخادم، ولكن ماذا لو أردنا حفظ مخرجات الدالة phpinfo()؟ قبل أن لا يكون هناك تحكم عازل، يمكن القول أنه لم يكن هناك أي طريقة على الإطلاق، ولكن مع التحكم العازل، يمكننا حل المشكلة بسهولة.
<؟
ob_start(); // افتح المخزن المؤقت
phpinfo(); // استخدم وظيفة phpinfo
$info=ob_get_contents(); // احصل على محتويات المخزن المؤقت وقم بتعيينه إلى $info
$file=fopen('phpinfo.txt','w'); // افتح الملف phpinfo.txt
fwrite($file,$info); //اكتب المعلومات إلى phpinfo.txt
fClose($file); // أغلق الملف phpinfo.txt
?>
باستخدام الطريقة المذكورة أعلاه، يمكنك حفظ معلومات phpinfo لمستخدمين مختلفين. ربما لم يكن هذا ممكنًا من قبل! وبالمثل، يمكن استخدام طريقة المخزن المؤقت لحفظ المهام التي يصعب إكمالها بالطرق العادية. وهذه في الواقع طريقة لتحويل بعض "العمليات" إلى "وظائف".