LKD‘nin Linux-programlama listesindeNeden Cannot modify header information – headers already sent by” hatası alıyorum sorulduktan sonra, Sn. Barış Çuhadır’ın cevaben verdiği bilgiler işin özünü yansıtması açısından çok güzeldi. Paylaşmak istedim.

CGI programları istenilen programlama dili ile yazılabilir. Örneğin ben şu anda C ile kendi cgi kütüphanemi oluşturmaktayım. C ile yazılan bir cgi programı, ayrı bir işlem olarak yaratılmayıp apache cgi modülü ile kullanıldığında, ortalama bir masaüstü bilgisayarda bile saniyede ortalama 800-1200 talebe yanıt verebiliyor.

Hele ki yazdığınız program işlemciyi yoğun olarak kullanan bir program ise, ör. C ile yazılmış, apache üstünde mod-cgi ile çalışan bir cgi programı yine apache üstünde mod-php ile çalışan aynı programdan 5-10 kat daha hızlı çalışmaktadır.

Türkçe cgi kitabı var mı yok mu bilmiyorum, varsa bile bir iki tanedir. Apache’nin belgelerinden, internet üstünde google’dan uygun sözcüklerle aranırsa iyi belgeler bulunabilir.


Ör:

CGI Specification ->  http://www.ietf.org/rfc/rfc3875
http://web.bilkent.edu.tr/WWW/hoohoo/cgi/overview.html


Tabi perl,php ve diğer web için kullanılan programlama dillerinin gelişmesiyle, bazı şeyler çok kolay yapılır hale geldi, php,python gibi inanılmaz yetkinlikte kütüphaneleri olan diller, olayı aldı, çok farklı yerlere götürdü.

Ancak iyi bir web programcısının, arkada ne tür işlerin döndüğünüde iyi bilmesi gerekir diye düşünüyorum. Ör. Php standart input’dan girdileri, yada trayıcının gönderdiği kurabiyeleri okuyarak, form dan gelen bilgileri geliştiriciyi hiç uğraştırmadan global request değişkenine atar, varsayılan olarak gerekli ise “\” ile karakter kaçınımlarını yapar. Oysa ben aynı işleri yapsın diye tam 12 ayrı işlev yazdım. Ör. Python’un kendi cgi modülünde bu işleri yapan işlevlerde mevcut.

Dolayısıyla yeni başlayan arkadaşları bir yana bırakırsak, işe cgi ile başlamış bir web programcısı “Cannot modify headers, headers already sent nedir abicim?” yada “PHP’de outputun başlayıp başlamadığının kontrolü” gibi sorular sormaz, çünkü çıktıyı programcının kendisinin başlattığını bilir.

CEVAP VER