WEB PROGRAMLAMA DİLLERİNİN PERFORMANS ANALİZİ Tuncay Yavuz Özdemir İbrahim Türkoğlu * * Elektronik ve Bilgisayar Eğitimi, Fırat Üniversitesi, Elektronik ve Bilgisayar Eğitimi, Fırat Üniversitesi, 23119, Elazığ. tyavuz23@hotmail.com, iturkoglu@firat.edu.tr ÖZET Bu çalışmada, günümüzde web tasarımlarında önemli bir yer alan, web programlama dillerinin performans analizi yapılmıştır. Bu amaçla ASP, PHP ve CGI dilleri kullanılarak, her biri için ortak uygulamalar geliştirilmiştir. Uygulama örnekleri üzerinde her dilin işlemciye bindirdiği yük karşılaştırmalı olarak verilip, değerlendirmeler yapılmıştır. Böylece web tasarımı yapacaklar için, kullanacakları uygulamalara göre dil seçimlerine yardımcı olacak bulgular elde edilmiştir. Anahtar Kelimeler: ASP, PHP, CGI, işlemci, web tasarımı. PERFORMANCE ANALYSIS OF WEB PROGRAM LANGUAGE ABSTRACT In this study, performance analysis of web program language is made which has an important place of web conception recently. For this aim, common applications were developed by using ASP, PHP and CGI. In given examples the load of each language that is exerted on the processor is compared and evaluated. Thus results are presented which will help the web designers to choose the appropriate program language. Keywords: Asp, Php, Cgi, Web Design. 1. GİRİŞ Web üzerinde bilgi, temel olarak statik ve dinamik olmak üzere iki farklı şekilde görüntülenir. Statik bilgi içeren sayfalar bir defa yazılıp sunulmasına rağmen, dinamik sayfalar temel olarak istemci istekte bulununca oluşturulur. Bu şekilde dinamik sayfalar oluşturmak için Web Programlama dilleri kullanılır [1].. Web programcılığı, artık standart haline gelen HTML (Hiper Metin Anlamlandırma Dili) ile başlamış ve CGI, JavaScript, ASP, PHP gibi dillerle devam etmiştir. Bu dillerin bazıları sunucu tarafında bazıları ise istemci tarafında çalışmaktadır [2]. İlk olarak HTML i ele alalım; HTML dosyalarının içeriği bağlanılan sunucu tarafından istemci bilgisayarında gösterilir. Yani tüm görüntüleme işlemini istemci bilgisayarı yapar. HTML den sonra çıkan JavaScript teknolojisi de buna yakındır. Yani dosyalar sunucu bilgisayar tarafından istemci bilgisayarına
yollanır ve istemci bilgisayarında düzenlenip görüntülenir. JavaScript içeren sayfalar diğer sayfalara göre daha geç yüklenmektedir çünkü tüm JavaScript kodları istemci bilgisayarında çalıştırılır ve tabi bu da performans kaybına yol açar. Sunucu tarafında çalışan programlama teknolojilerinde ise tüm kodlar sunucu tarafında çalıştırılır ve istemciye sadece salt HTML kodları gönderilir [3]. Buradan anlaşılacağı üzere sunucu taraflı programlamada sayfa içerisinde bulunan tüm kodlar sunucu üzerinden çalıştırılır. Bu yönüyle sunucu bilgisayarının performansı nispetinde sistem o denli hızlı işler. İstemci bilgisayarı ise sadece sunucudan gelen salt HTML sayfalarını görüntüler. Kullanıcı herhangi bir tarayıcı vasıtası ile ilgili siteye bağlandığında, ulaşmak istediği dosyayı, istemci bilgisayara gönderir. Ancak bu durum.html ve.htm uzantılı dosyalar için böyle iken, sunucu taraflı programlama ile hazırlanan bir dosyaya istekte bulunduğunda Web sunucu istenilen bu dosyayı önce yorumlar ve bu işlemin sonucunda üretilen standart HTML kodları kullanıcıya gönderir. Sonuç olarak kullanıcıya iletilecek HTML dosyası, kullanıcı istekte bulunana kadar oluşturulmaz. Kullanılan tarayıcı tipi, yazılan sunucu taraflı programlama dosyaları için önemli değildir. Çünkü yorumlanan sunucu taraflı programlama dosyaları standart HTML çıktı üretirler [4]. PHP (Personel Home Page-Hypertext Preprocessor) ve ASP (Active Server Pages) sunucu tabanlı betik dilleridir. PHP ve ASP'nin temel ortak özellikleri HTML içine yazılmalarıdır. Sayfa uzantısı.php veya.asp olan bir dosya sunucudan istendiğinde, sunucu bu sayfayı PHP veya ASP yorumlayıcına yönlendirir. Yorumlayıcı PHP veya ASP kodlarını yorumlar, yapılması gerekenleri yapar ve ziyaretçinin tarayıcısına sonucu gönderir. Özet olarak, bir sunucu taraflı programlama ile hazırlanan sayfa şunlardan oluşur: Bu sayfaların içinde kod vardır. Bu sayfaların kodları Web sunucusu tarafından icra edilir. Bu sayfa kullanıcının tarayıcısına salt HTML kodu olarak gelir. 1.1. Web Sunucu Web, Internet üzerinde yer alan grafiksel bir servistir. Hazırlanan içeriklerin (grafik, yazı, ses, animasyon, görüntü vb.) dünya üzerinde yer alan tüm kullanıcılara iletilmesi ve kullanıcıların bu dosyalara ulaşabilmesi için Internet e bağlı bir bilgisayar üzerinde çalışan uygulama yazılımını Web sunucu olarak tanımlanabilir [5]. Web sunucu programları kuruldukları işletim
sistemine göre farklılık gösterebilir. Sözgelimi Web sunucu olarak Unix işletim sistemini kullanan bilgisayarlar Apache kullanırken, Windows işletim sistemini kullanan bilgisayarlar (sunucu) ise, Web sunucu programı olarak IIS (Internet Information Server) kullanabilir. 1.2. Statik Sayfa Nedir? Bir Web gezgini olarak Internet te dolaşırken sürekli olarak statik sayfalarda geziniyorsunuz demektir. Statik sayfa onu oluşturan kişinin (Webmaster), bu sayfanın içeriğini bitirdiği, tamamladığı ve kullanıcıların bu sayfaya her uğradığında aynı içeriği gördüğü sayfalardır. İçeriklerinin değişmesi için yeniden tasarlanmaları gereklidir. Bu zaman ve iş gücü kaybına yol açan bir etkendir. Statik sayfa tanımını ve özelliklerini belirleyen bazı önemli hususlar şunlardır: - Tasarımcı (Webmaster) sayfasını hazırlar ve.htm uzantılı bir dosya olarak kayıt eder. - Tasarlanan dosya Web sunucuya yayınlanmak üzere yerleştirilir. - Kullanıcı tarayıcının adres kısmına bu sayfaya ulaşmak için gerekli adresi yazar. - Bu isteğe karşı Web sunucu ilgili dosyayı bulur. - Web Sunucu, HTML içeriğini istek gönderen tarayıcıya internet ağı aracılığı ile yollar. - Tarayıcı gönderilen bu HTML dosyasını işler ve ekranda gösterir. 1.3. Dinamik Sayfa Nedir? İçeriği, tamamı ile önceden belirlenmiş bazı kriterlere bağlı olarak değişen sayfalar, dinamik sayfalar olarak adlandırılır [6]. Bu değişiklik, sayfanın aldığı bazı girdilere göre olabilir. Dinamik sayfaların Web sunucu tarafında yorumlanma işlemi gibidir. Dinamik sayfaların bazı özelikleri ise: - Programcı veya Web tasarımcı bazı komut dosyalarını da içeren bir dosya hazırlar. - Tasarlanan dosya Web sunucuda yayınlanmak üzere yerleştirilir. - Kullanıcı, tarayıcının adres kısmına bu sayfaya ulaşmak için gerekli adresi yazar. - Bu isteğe karşı, Web sunucu komutları içeren ilgili dosyayı bulur. - Web sunucu bu komutlar dizisini işleyerek HTML çıktı üretir.
- Web sunucu oluşturulan bu HTML çıktıyı, istekte bulunan tarayıcıya gönderir. - Tarayıcı, gönderilen bu HTML dosyasını işler ve ekranda gösterir. 2. WEB PROGRAMLAMA DİLLERİ HyperText Transfer Protocol (HTTP)'nin ortaya çıkışı ile Internet gerçek kimliğine kavuşmuştur. Bu sayede, Web sunucusu ile konuşan bir Web tarayıcının sunucudan aldığı zengin içerikli bilgi, uç kullanıcılara resim, ses, görüntü gibi zengin içerikte ve kullanıcı dostu bir ara yüzle ulaştırılabilir hale gelmiştir [7]. Bu zengin içeriğin değişmeyen sayfalar olarak tutulması kullanıcılar için çok şey ifade etmediği için onlara içeriği otomatik değişebilen ve veri tabanı erişimi sunan siteler oluşturmak için çok çeşitli teknolojiler geliştirilmiştir. Web ortamında dinamik sayfalar oluşturmanın temel olarak iki yolu vardır: Sunucu tarafında çalışan uygulamalar kullanmak ve İstemci tarafında çalışan uygulamalar kullanmak. İstemci tarafında çalışan uygulama olarak; Java Appletleri, Netscape'in JavaScript'i ve Microsoft'un VBScript'i gibi betik dilleri kullanılabilir. Avantajları: Sunucuyu meşgul etmemesi: Veri girişi kontrolleri, menüler, genişleyebilir listeler gibi istemci tarafında yapılabilecek işler için sunucu meşgul edilmemiş olur. Bant genişliğini etkili kullanma: Yukarıdaki avantaj bant genişliğini de etkilemiş oluyor. Sunucu tarafında çalışan uygulamaları kullanmak ise, şu noktalarda istemci taraflı uygulamalara üstünlük sağlamaktadır: 1. Web tarayıcılarında betikler için standart bulunmamaktadır. Bu nedenle bir tarayıcıda çalışan bir betik diğerinde çalışmayabilir. Tarayıcıların Java Appletleri yorumlamada kullandıkları Java sınıflarının versiyonu tüm Appletleri çalıştıramayabilir. 2. Bant genişliğini kullanım açısından, işlemlerin önemli bir bölümünün sunucu tarafında yapılması gerekir.
3. Uygulamaların güncel tutulması ve bunu yaparken de istemciler üzerinde değişiklik yapılmayıp sadece sunucu üzerinde (tek bir merkezden) gereken değişikliği yapmak tercih edilir. Yukarıda genel olarak verilmeye çalışılan Web programlama dillerinin türleri ve detayları aşağıda sunulmuştur. 2.1. CGI Web geliştiriciler statik sayfalardan, akıllı dinamik sayfalara geçmek istediklerinde, kısa adı CGI olan Common Gateway Interface (Ortak Giriş Arayüzü) teknolojisini geliştirdiler. Bu geliştiricilerin asıl istediği, Web sunucusu üzerinden sunucu tarafında programlar çalıştırabilmekti [8]. Bu yeni teknolojiye Common Gateway denilmesinin üç önemli sebebi vardır: CGI programları sunucudan bağımsızdır, CGI programları hemen her dille yazılabilir ve Hemen her istemcide çalışabilir. CGI programlarında temel fikir, uygulamaların mantık katmanının, sunucu tarafında oluşturulmasıdır [9]. 2.2. ASP ASP, yani Active Server Pages (Aktif Sunucu Sayfaları) Microsoft firması tarafından klasik HTML sayfalarına dinamik bir yapı kazandırmak amacıyla ortaya çıkarılmış bir teknolojidir. ASP de bu yeni teknolojinin yeni bir parçası olmuştur [10]. Web sunucu programları, sabit disk üzerinde yer alan bilgileri istemcinin tarayıcı programına göndermekle sınırlı olan bir yapıya sahiptir. Web sunucusunun kullanıcıya statik bilgi sunmasının yanı sıra ziyaretçiden de veri kabul etmesinin gerekli olacağı düşünülür. Böylelikle Web sitesi üzerinden kullanıcının taleplerine göre tepki veren bir bilgi sunumu gerçekleşmiş olacak, ayrıca ziyaretçiden de veri alınabilecek bir yapı kurulmuş olacaktır. Microsoft ASP, etkileşimli Web sayfalarını oluşturmak, güçlü ve hızlı Web uygulamalarını geliştirmek için, sunucu tarafında işleyen komutlar dizisidir. Tasarımı yapılmış bir ASP uygulaması uzantısı.asp ile kaydedilmiş olan bir metin dosyası içerisinde yer almaktadır. Başka bir ifadeyle ASP, JavaScript gibi, VB Script gibi komutları, düz yazı dosyası olarak
kaydedilen ve çalışabilmesi için yorumlayıcıya ihtiyacı olan bir dildir. Sunucu kendisinden.asp uzantılı bir dosya talep edildiği zaman, dosyada yer alan komutları kontrol edip işler. Yani uzantısı.asp olan her dosya, istemci bilgisayarına gönderilmeden önce sunucuda ASP.DLL ismi verilen bir DLL'de çalıştırır [11]. Bilgisayar programcılarının geliştirdikleri uygulamaları dünyanın her yerinden erişilebilecek bir platforma kavuşturmak ASP ile mümkün olmuştur. ASP dosyaları; 1- Ziyaretçi tarafında çalışan HTML komutlarını, 2- Veritabanına bağlanmayı, veritabanı işlemlerini belirleyecek cümleleri, 3- Yürütülecek işlemler zincirinin hizmet ettiği çeşitli görevleri sağlayan COM bileşeni çağrılarını içermektedir. 2.3. PHP PHP, bir betik dilidir; yani kodları düz yazı dosyaları halinde kaydedilir ve kullanılacağı ortamda bir yorumlayıcı tarafından yorumlanır. PHP Betikleri çalıştırabilmek için bu dili yorumlayabilen bir program gereklidir. Bu programın tek başına çalışması mümkün olduğu gibi, Web sunucu tarafından da çalıştırılabilir. İster kişisel bilgisayarda, ister Internet ortamında olsun, bir Web Sunucu, ziyaretçinin talep ettiği dosya adının uzantısı olarak.php,.php2,.php3, veya.php4 görünce, işlem yapmaya başlar. Web sunucuya bu sayfayı olduğu gibi alıp ziyaretçinin tarayıcısına göndermek yerine, önce PHP yorumlayıcıyı çağırır. PHP yorumlayıcısı, kendisine teslim edilen bu belgede önce "<?PHP" ve "?>" ayraçları arasındaki PHP kodlarını seçerek alır ve işlemi yapar. Bu işlemin sonunda ortaya çıkan ürün eğer ziyaretçiye gönderilecekse, HTML etiketleri içinde gönderilir; yani ziyaretçi asla PHP kodlarını göremez [12]. "<?PHP" ve "?>" ayraçların içinde kalan kodlar, yapılacak işlemin komutlarıdır. HTML ile yetinmeyip, PHP kullanılmasının sebebi, bu komutların HTML'in yapamayacağı şeyleri yapmasıdır. HTML'in yapamayacağı şeylerin başında, Web sunucusunda yapılacak işler vardır. Sözgelimi HTML etiketlerini kullanarak, Web sunucusundaki bir veritabanı dosyasını açıp, içindeki veriler okunamaz. HTML etiketleri ile Web ziyaretçisinden bilgi edinebilir ve bunlar sunucuya yollanabilir. Bu bilgileri, işe yarar şekle sokmak için, sunucuda
çalışan bir program gerekir. Sunucuda çalışan program, EXE, DLL veya Java Server Pages gibi bir gerçek program veya PERL, ASP ve PHP gibi betik diliyle yazılmış bir program olabilir. 3. UYGULAMALAR Bu bilgiler ışığında, CGI, ASP ve PHP Web programlama dilleri kullanılarak aynı işlemi yapan üç ayrı uygulama hazırlanmıştır. Uygulama yapılırken ulaşılması istenen amaç; günümüzde yaygın olarak kullanılan Web programlama dillerinin performans analizini yapmaktır. Örnek uygulama olarak; Web de yayımlanan tüm Web siteleri için kullanılabilir olan, site içi üyelik sistemi seçilmiştir. Üyelik sistemi, günümüzde geçerliği olan CGI, ASP ve PHP Web programlama dilleri kullanılarak ayrı birer uygulama olarak yapılmıştır. Tüm bu uygulamalar yerel olarak çalıştırılarak, test sonuçları elde edilmiştir. Örnek program uygulamalarında sayfada hata olmaması durumunda hafızaya fazla iş düşmemektedir. Yapılan değerlendirmelerde, her bir uygulamada %1 ile %3 arasında hafıza kullanımında farklılıklar görülmüştür. Bu nedenle, uygulamaların üç aşamada CPU ya bindirdiği yük gözlenerek şekil.1, şekil.2 ve şekil 3 te çıkarılmıştır. 1. Giriş sayfasının yüklenmesinde: Giriş Sayfası 120% CPU Kullanımı (%) 100% 80% 60% 40% 20% 0% 1 2 3 4 5 6 7 8 9 10 11 12 13 Zaman (msn) CGI ASP PHP Şekil 1. Giriş Sayfası Yüklenirken CPU Kullanım Oranı
2. Sisteme kayıtlı kullanıcının, kullanıcı adı ve parola girmesiyle, bu bilgilerin kontrolü ve yeni sayfaya yönlendirilmesinde: Üye Girişi 60% CPU Kullanımı (%) 50% 40% 30% 20% 10% CGI ASP PHP 0% 1 2 3 4 5 6 7 8 9 10 11 12 13 Zaman (msn) Şekil 2. Üye Girişi Yapılırken CPU Kullanım Oranı 3. Sisteme yeni üye kaydının yapılması sürecinde: Yeni Üye Kaydı 60% CPU Kullanımı (%) 50% 40% 30% 20% 10% CGI ASP PHP 0% 1 3 5 7 9 11 13 15 17 19 Zaman (msn) Şekil 3. Yeni Üye Kaydı Yapılırken CPU Kullanım Oranı Şekillerden görüleceği üzere PHP ile yapılan uygulama her üç değerlendirmede de en iyi sonucu vermektedir.
4. SONUÇLAR Günümüzde yaygın kullanım alanı bulmuş olan Web programlama dillerinden CGI, ASP ve PHP dilleri incelenmiştir. Web tasarımında HTML ile oluşturulan sayfaların dinamik içerikli olabilmesi için gerekli olan Web programlama dilleri ile uygulamalar geliştirilmiştir [13]. CGI, ASP ve PHP kullanılarak birer örnek uygulama üzerinde, performans değerlendirmesi yapılmıştır. Performans değerlendirmesi; seçilen uygulamada, en çok kullanılan bölümler olduğu için, her bir uygulamada ki giriş sayfası, üye girişi ve üye kaydı bölümleri üzerinde yapılmıştır. Her bir bölümün çalıştırılması durumunda, CPU yu meşgul etmesi % cinsinden ölçülmüştür. Sunucu bilgisayarında, uygulama öncesi CPU nun %3 oranında meşgul olduğu şekil 1, 2 ve 3 te görülmektedir. Aşağıda ki Tablo 1 de ise bu değerlendirme oranlarının ortalamaları verilmiştir. Buradan da görüleceği üzere CPU ya bindirdiği yük açısından değerlendirildiğinde, PHP ~9.3 % ile en iyi performansı sağlamaktadır. Giriş Sayfası Üye Girişi Üye Kaydı Toplamda CGI 64 20 17 ~33.6 ASP 58 11 10 ~26.3 PHP 10 10 8 ~9.3 Tablo 1. Ortalama CPU Kullanımı (%)
KAYNAKLAR [1] http://www.microsoft.com/mind/0100/vml/vml.asp (Erişim tarihi:nisan 2004). [2] Sung-Jung, H, Wen-Tsai, S, Shih-Ching O, Web-based search system of pattern recognition for the pattern of industrial component by an innovative technology, A Learning Science and Technology Laboratory, Department of Computer and Information Science, National Chiao Tung University, Taiwan, 2003. [3] Holzner, S. Java Script Temel Başvuru Kılavuzu, ISBN: 975-2973-31-0, Alfa Yayınları, İstanbul, 2003. [4] HOLZSCHLAG, M. E. H TML 4, ISBN: 975-322-176-0, Sistem Yayıncılık, İstanbul, 2004. [5] Uysal, M. 2001, Web Teknolojileri, ISBN: 975-486-440-8, Beta Yayınevi. 2002. [6] Varsha, A, Tony, H, Paul R, Performance comparison of dynamic Web platforms, A Department of Computer Science and Engineering, Indian Institute of Technology-Bombay, Mumbai 400 076, India, 2002. [7] Uysal, M. 2001,PHP 4 ile Web Tasarımı, ISBN: 975-486-440-8, Beta Yayınevi, 2001. [8] http://hadi.ulakbim.gov.tr/myworks/internethaftasi2001/classic/php_1.myhtml (Erişim tarihi: Nisan 2004). [9] Acar, Ö. PERL/CGI, ISBN: 975-7092-25-0, Pusula Yayıncılık, İstanbul, 2001. [10] ASP Standarts of the Internet Information Server Resource Kit, ISBN: 020-1658-49-0, Microsoft Pres,1988. [11] Arslan, S. İleri Active Server Pages (ASP), ISBN: 975-6812-76-2, Türkmen Kitabevi, İstanbul, 2003. [12] Ullman, L. PHP for the World Wide Web Visual Quickstart Guide, ISBN: 020-1727- 87-0, Peachpit Press 2001. [13] Özdemir, T.Y. Web Programlama Dilleri, Yüksek Lisans Semineri, Fırat Üniversitesi Fen Bilimleri Enstitüsü, 2004.