النتائج 1 إلى 8 من 8

الموضوع: تعرف على ال output buffering

  1. #1

    تعرف على ال output buffering



    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته ,,

    فى هذا الموضوع سنتكلم عن تخزين النتائج مؤقتا او ال 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() // تقوم بانهاء التخزين المؤقت مع طباعة ما تم تخزينه 








  2. #2
    عضو نشيط
    تاريخ التسجيل
    Sep 2002
    المشاركات
    182


    تسلم اخي على الدرس الجميل






  3. #3


    جزاك الله خير على الدرس المفيد

    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074



  4. السلام ..
    احسن ما في هذه الداله هي استخداماتها ..
    يعني .. عندما يكون لديك موقع .. وله كمية كبيرة من الزوار .. فهاذا قد يكون متعباً للMySQL .. فتخيل في كل مرة ياتي شخص لموقعك تذهب السكربت الى قاعدة البيانت و يسوي query كل شوي ؟؟ ليش تسوي كذا ؟؟ لان الناتج لا يتغير لساعات و بعض الاحيان لايام ؟؟ فلماذا لا تخزن الناتج من الصفحة في ملف .. وبعدها عندما ياتي الزائر . السكربت يفك الملف و يقرء تاريخ الملف .. اذا كان الملف جديد .. قم بطباعه محتوى الملف للشاشة .. اذا كان الملف قديم نسبياً فقم بجلب بيانات جديدة من قاعلد البيانات ثم حفظها في ملف . لكي يكون ذالك الملف المرجع للصفحة لساعة او ساعتين ..

    هذا هي فكرة الcache الموجودة في بعض المواقع مثل المنتديات و المدونات . و موقعي القادم





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  5. #5


    اقتباس المشاركة الأصلية كتبت بواسطة hilaby
    السلام ..
    احسن ما في هذه الداله هي استخداماتها ..
    يعني .. عندما يكون لديك موقع .. وله كمية كبيرة من الزوار .. فهاذا قد يكون متعباً للMySQL .. فتخيل في كل مرة ياتي شخص لموقعك تذهب السكربت الى قاعدة البيانت و يسوي query كل شوي ؟؟ ليش تسوي كذا ؟؟ لان الناتج لا يتغير لساعات و بعض الاحيان لايام ؟؟ فلماذا لا تخزن الناتج من الصفحة في ملف .. وبعدها عندما ياتي الزائر . السكربت يفك الملف و يقرء تاريخ الملف .. اذا كان الملف جديد .. قم بطباعه محتوى الملف للشاشة .. اذا كان الملف قديم نسبياً فقم بجلب بيانات جديدة من قاعلد البيانات ثم حفظها في ملف . لكي يكون ذالك الملف المرجع للصفحة لساعة او ساعتين ..

    هذا هي فكرة الcache الموجودة في بعض المواقع مثل المنتديات و المدونات . و موقعي القادم
    لنفرض أن الملف جديد والبيانات تجددت ؟؟؟؟ سوف يعرض النتائج القديمة للزائر :s :s ..

    بانتظاركم ..

    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074



  6. طبعا ستبرمج لك طريقه لفعل ذالك .. يعني الصفحة لا تجب ان تكون مكونة من ملف واحد ...قد يكون الصفحة مكونة من عده ملفات ؟؟ يعني عندما تضيف شيء الى قاعدة البيانات .. يذهي السكربت و يحذف الملف الخاص بذالك المقطع .. وايضا ..لا تكثر منها .. يعني اذا كان الصفحة يتغير كل 3 الى 4 دقائق .. لا تعمل الCache واذا المقطع يتغير فقط عندما يغيرة الادمن .. اذا هو الملف اللذي تريد ان تفعل له الCache

    في اكثر الاحيان الCache يطبق في ملفات الindex.php





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  7. #7


    وصلت الفكرة استاذ hilaby .. إن شاء الله نحاول نطبقه في أعمالنا ..

    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

  8. #8


    السلام عليكم

    شكرا للاخوان لتفاعلهم مع الموضوع وشكر خاص للاخ hilaby على اضافته القيمة ,

    بالفعل الافضل تجزئة الصفحة وتطبيق الكاش على كل جزء وبذلك يمكنك تحديد مدة مختلفة للكاش لكل جزء بالصفحة وجعل بعض الاجزاء بدون كاش (كالمتواجدون حاليا مثلا) وكما يمكنك تخزين الكاش فى ملفات يمكنك ايضا تخزينه فى قاعدة البيانات والانسب يتوقف على طبيعة استخدامك

    تحياتى للجميع










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض