ob_start(); ve ob_end_flush(); ne işe yarar?

  • Konbuyu başlatan trgy
  • Başlangıç tarihi
T
trgy
Misafir
Az önce bir yönlendirme sayfası yapayım dedim ama header already send diye bir hata aldım. Daha sonra sorunun çözümüne ulaştığımda ise bana

ob_start();
ob_end_flush();


fonksiyonlarını verdi. Gerçekten de ekledim bunları ve sorun düzeldi. Tam olarak bunların ne işe yaradığını ne yaptılar da sorunları düzelttiğini açıklayabilecek birisi var mı?
 
0
Onaylı Üye
Katılım
6 Şubat 2006
Mesajlar
1,541
Tepki puanı
32
Birinden' Alıntı:
Re: ob_start(); - ob_end_flush();
ob_start la output buffering olayını başlatıyoruz. yani çıktıyı tarayıcıya göndermek yerine bir bufferda depoluyor bu ve ob_end_flush lada işim bitti artık tarayıcıya gönder diyorsun. sanırım default olarak script sona erdigindede ob_end_flush işlemi gerçekleşiyor yani çağrılmasına gerek yok ama sanırım

umarım anlamışındır
 
0
Onaylı Üye
Üye
Katılım
12 Aralık 2004
Mesajlar
9,603
Tepki puanı
106
Konum
AZ
301/302 redirect, ya da cookie set etme gibi işlemler, http isteğinde headerda gönderilir. Script ilk echo, html kodu, herhangi bir ekrana basma işlemi gerçekleştirdiğinde, header gönderimi bitmiş kabul edilir. Bu aşamadan sonra redirect, cookie işlemleri yapamazsın. Header'ları gönderdik kusura bakma hacı der. (Cannot modify header information - headers already sent hatası)

ob_start'da ekrana basmaları sen serbest bırakana kadar göndermez, böylece scriptin altında bir yerde herhangi bir koşul karşılığı redirect/cookie yapmak istersen yapabilesin diye bunu kullanırsın.

ayrıca sürekli tekrar eden bazı işlemlerde de kullanılır. mesela sayfalama yaptığında, genelde hem sayfanın üstünde hem en altında sayfa 1 2 3 diye yazdırılır navigasyon kolaylığı açısından. bazı programcı arkadaşlar hem yukarıda hem aşağıda aynı kodu tekrar çalıştırır. bu tarz arkadaşları sevmiyoruz. tepedeki navigasyonu ob_start(); --- ob_get_contents(); bloğu arasına alıp, aşağıda tekrar aynen kaydettiğimiz outputu basarız. bu tarz işlerde de yararlıdır output fonksiyonları. Bir de ob_gzhandler() vardır ki, sıkıştırılmış output yaratır. bandwidthden tasarruf sağlar.
 
  • Beğen
Reactions: jxc
T
trgy
Misafir
301/302 redirect, ya da cookie set etme gibi işlemler, http isteğinde headerda gönderilir. Script ilk echo, html kodu, herhangi bir ekrana basma işlemi gerçekleştirdiğinde, header gönderimi bitmiş kabul edilir. Bu aşamadan sonra redirect, cookie işlemleri yapamazsın. Header'ları gönderdik kusura bakma hacı der. (Cannot modify header information - headers already sent hatası)

ob_start'da ekrana basmaları sen serbest bırakana kadar göndermez, böylece scriptin altında bir yerde herhangi bir koşul karşılığı redirect/cookie yapmak istersen yapabilesin diye bunu kullanırsın.

ayrıca sürekli tekrar eden bazı işlemlerde de kullanılır. mesela sayfalama yaptığında, genelde hem sayfanın üstünde hem en altında sayfa 1 2 3 diye yazdırılır navigasyon kolaylığı açısından. bazı programcı arkadaşlar hem yukarıda hem aşağıda aynı kodu tekrar çalıştırır. bu tarz arkadaşları sevmiyoruz. tepedeki navigasyonu ob_start(); --- ob_get_contents(); bloğu arasına alıp, aşağıda tekrar aynen kaydettiğimiz outputu basarız. bu tarz işlerde de yararlıdır output fonksiyonları. Bir de ob_gzhandler() vardır ki, sıkıştırılmış output yaratır. bandwidthden tasarruf sağlar.

:alkış::alkış:
 
Geri
Üst