"Başlıklar zaten gönderildi" için doğru çözüm olarak çıktı tamponlama için çantasını kullanın

5 Cevap php

Ben (bu sitede değil, sadece) rezil konusunda deneyimsiz PHP programcıları soru bir sürü görmek hatası "zaten gönderildi başlıklarına ... çıkış başladı", ve birçok kişi bir çözüm olarak çıktıya tamponlama kullanmanızı öneririz.

Benim durumumda bu hata programın mantığındaki bir kusur neden olmayan bir durum bulmadım. Çıktı tamponlama aslında doğru çözüm olduğu durumlar var mı?

5 Cevap

Ben sizin ilk deyimi ile hemfikir. Çıkış tamponlama ile genellikle çözme "başlıkları" sorunu geçici bir önlemdir olduğunu.

Bu çözümün gerçekten üzücü / komik bir parçasıdır: Eğer büyük çıkış şey istediğinizde ne böyle bir paywall arkasında tutuyor bir dosya olarak, olur? Genellikle kendi komut bellek tükeniyor ile "başlıkları" sorunu yerine insanlar sonuçlanır.

Whoops.

Ben hayal edebiliyorum sadece durum eklentileri gibi, HTML kodu çağrılabilir hangi bir CMS veya Weblog olduğunu

<h1>My images</h1>
{plugin:show_images}

Bu eklentileri sayfanın <head> bölümünde gidin kendi stil sayfaları ve başka şeyler eklemek zorunda kalabilirsiniz. Tampon kullanımı, bu mümkün olacaktır.

Uygulamada rağmen, bu performans için iyi değildir kludgy hisseder ve çıkış tamponlama kapatıldığında çalışmaz. Burada bile, o nedenle bunları gösteren ve bir şey daha önce herhangi bir vb stil sayfaları ekleyerek yapmadan önce içeriğini çıkış öncesi süreci daha iyidir.

Siz HTTP şablonlar veya istisna işleme, örneğin akış geç yönlendirir sorunu isteyebilirsiniz. (Tabii ki, çiftleşmiş ya da küresel istisna işleme ile bir çerçeve zaten çıktı tamponlama gerekir, o yüzden özellikle bu sorun için bir çözüm değildir diyebiliriz.)

Benim durumumda bu hata programın mantığı bir akışı neden olmayan bir durum bulmadım. Çıktı tamponlama aslında doğru çözüm olduğu durumlar var mı?

Ancak, sizinle aynı fikirde olurdu:

Size sorunu çözmek nasıl seçmelerini sağlar, çünkü 1) PHP gibi nedenlerinden biri

2) 'zaten gönderildi Başlıkları' mesajı sabitleme dışındaki output_buffering için başka kullanım alanları vardır - örneğin , çıkış sıkıştırma keyfi kod çıkışı yakalayan, yığın halinde kodlama kaçınarak ....

C.

şablon sistemleri hakkında ob_start ihtiyacınız olacak ... bakmak ve Zend_View

Later Edit I misunderstood the question and provided a case where ob_start use is a valid solution.