2010-11-08 15 views
9

PHP belgeleri Bir ob_end_flush her ob_start() son gerektiğini göstermektedir(). Uygulamanın herhangi bir yerinde firephp log yöntemlerini kullanmama izin vermek için sitenin her sayfasında bir tane kullanıyorum.ob_start() 'ı neden bitirmem gerekiyor?

uygulama çalışıyor ama bunun zararlı olabileceğini bilmiyoruz şey var mı merak ediyorum.

cevap

8

Ben bu öneriye nedeni ob_end_* işlevlerden birini kullanmıyorsanız, PHP örtük çıktı tamponunu boşaltır olduğunu, olduğunu düşünüyorum. değil bir hata olsa bunu beklemiyordum zaman, bu sorunlara neden olabilir. PHP-docs sizi bu tür problemlerden korumayı dener. Eğer örtük floştan haberdarsanız, muhtemelen bir sorun değildir.

<?php 
ob_start(); 
echo "Some text you want to echo on page!!"; 
header("Location:somepage.php"); 
ob_end_flush(); 
?> 

Sorun şu çıktıyı göndermeye başlamak sonra başlık gönderemezsiniz olmasıdır olarak

0

Sen Çıktı Tamponlaması kullanabilirsiniz. Bunu çözmek için çıktıyı tamponluyoruz. Ob_start işlevi, çıktı arabelleğini açar. Çıktı tamponu etkin iken bir çıkış çıktı dahili tamponunda depolanır (başlıklar dışında) komut, gönderilir. Böylece eko çıkışı arabelleğe alınacaktır. Daha sonra, herhangi bir çıktı çıkarmamış olduğumuzdan, başlığı herhangi bir sorun olmadan göndeririz. Son olarak, dahili arabellek içeriğini temizlemek ve çıktı arabelleklemeyi durdurmak için ob_end_flush diyoruz. döngüler varsa

0

, örneğin, bazı bir tamponlama başlayabilir. Ve işlevini çağırır. Ob_end_flush kodunu kullanmaya çalıştığında, içeriğinizi toplar.

İlgili konular