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

الموضوع: درس خفيف

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2000
    المشاركات
    2,029

    درس خفيف



    كنت أقوم اليوم ببعض التجارب، فأحببت أن أنقل لكم هذه التجربة، أردت إنشاء برنامج يأخذ البيانات من قاعدة البيانات ثم يضعها في ملف htm، بحثت عن الطريقة، فكانت هذه النتيجة:
    كود:
    ob_start(); 
    //CODE HERE 
    $page = ob_get_contents(); 
    ob_end_clean(); 
    
    $fp = fopen("myfile.htm", "wb"); 
    fwrite($fp, $page); 
    fclose($fp);
    لا تسألوني عن فائدة الأوامر التي تبدأ بحرفي ob فأنا لا أعرف حتى الآن، لكن المهم أن تضع النتائج التي تريد طباعتها في ملف htm في المكان الذي كتب فيه التعليق "CODE HERE"، شخصياً قمت بإدراج ملف header.htm ثم طلبت البيانات من القاعدة، ثم قمت بإدراج ملف footer.htm، وكانت النتيجة تماماً كما أريد، ملف htm بالتصميم الذي أريده.

    تحياتي





    سردال غير متواجد حالياً


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


    طريقة ممتازة، وهي تعتمد على إحدى ميزات PHP (التي لا يبدو أن الكثير يعرفونها) حيث أن الدالة ob_start تقوم بتحفيز PHP لتشغيل حاجز المخرجات (ذاكرة المخرجات المؤقتة)، إذا أن مفسر PHP في الأساس يقوم بإرسال كل ما يتجمع لديها من مخرجات أولاً بأول (للمستعرض مثلاً)، ولكن مع تشغيل حاجز المخرجات باستخدام الدالة ob_start سيقوم PHP بحجز كل ما يصل إليه من مخرجات في ذاكرة مؤقتة يطلق عليها output buffer ولن يرسلها حتى تقوم بتشغيل أمر ob_flush، كما يمكن بسهولة تحويل هذه المخرجات إلى منفذ آخر (كأن يتم حفظها على ملف) وذلك باستخدام الدالة ob_get_contents ومن ثم إلغاء عملية الحجز وتصفية ذاكرة المخرجات المؤقتة باستخدام الدالة ob_end_clean.

    توجد العديد من الميزات والاستخدامات لهذه الطريقة، ومن أهمها مثلاً أنه بالإمكان تجاوز مشكلة إرسال عبارات header متأخرة بجميع أنواعها والذي يعاني منها الكثيرون عندما يجدون رسالة headers already sent، حيث يقوم مفسر PHP بإعادة ترتيب المخرجات بشكلها الصحيح عند حجزها وإفراغها فيتم إرسال عبارات الرأس أولاً ثم المخرجات الأخرى، مثال:

    كود PHP:
    <?php 
    // حجز المخرجات
    ob_start(); 
    ?>
    <html>
    <body> whatever </body>
    </html>
    <?php 
      
    if (!isset($dummy)) 
      
    header('location: http://www.swalif.net/softs');
      
    // إرسال المخرجات، وسيقوم 
      // بترتيب المخرجات حيث تصبح عبارات الرأس
      // header
      // أولاً قبل النص، ولن تظهر عبارات الأخطاء
      
    ob_end_flush();
    ?>






    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً

  3. #3
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2000
    المشاركات
    2,029


    جزاك الله خير على الشرح الطيب

    طيب، لو استخدما هذه الأوامر في برنامج أو موقع عليه طلب كثيف، فهل يؤثر هذا الأمر على أداء المستضيف؟





    سردال غير متواجد حالياً

  4. #4
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137


    استخدام ob_start وحاجز المخرجات لا يؤثر فعلياً على أداء المستضيف إلا في حالة أن تكون صفحات موقعك من (النوع الثقيل) وأقصد بذلك أن مخرجات الملف الواحد إلى المستعرض كبيرة، حيث أن تشغيل حاجز المخرجات سيستغل حيزاً من الذاكرة بمقدار هذه المخرجات وسيؤثر نسبياً على الأداء بمقدار الذاكرة المحتجزة من طلب لآخر، فالأفضل عدم استخدامها إلا مع تلك التي يكون حجم مخرجاتها صغيراً فعندئذ لن يؤثر ذلك على أداء المستضيف إن لم تكن ستسخدم أشياء أخرى كقيامك بكتابة المخرجات بشكل ثانوي أو ضغط المخرجات وما إلى ذلك.





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Apr 2003
    المشاركات
    283


    شكرا اخي سرداد يعطيك العافية على المثال الجميل

    وشكر للاستاذ VisualMind
    افادتني معلوماتك
    أسأل الله أن يجعل ذلك في ميزان حسناتك..





    __________________
    مجموعة بي اتش بي العربية www.php4arab.org
    البوابة العربية www.arabportal.net
    rafia غير متواجد حالياً

  6. #6


    رد مقتبس من rafia
    شكرا اخي سرداد يعطيك العافية على المثال الجميل

    وشكر للاستاذ VisualMind
    افادتني معلوماتك
    أسأل الله أن يجعل ذلك في ميزان حسناتك..






    __________________
    عزوز الحسني
    أبو ماجد الصارم غير متواجد حالياً

  7. #7
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137


    آمين، وشكرا لكما





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً





المواضيع المتشابهه

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

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

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