5 Mayıs 2013

Php Nedemek

Merhaba Arkadaşlar...

Şimdi sizlere "php" kelimesinin özelliklerini ve anlamını anlatacağım.

Php şu şekilde tanımlanabilir: 
*Sunucu tabanlı (server sided), 
*HTML ile bir arada kullanılabilen (HTML embedded), 
*Script dili. 


Php'nin gelişim süreci: 
*PHP-FI (Dinamik HTML üretimi, satır satır kod işletimi, CGI modeli çalışma) 
*PHP-3.x (Apache'ye modül olarak gömülebilme, yerleşik veri tabanı arabirimleri) 
*PHP-4.x (Ön derleme ve optimizer ile ara kod iyileştirme, eklentiler) 

Çalışma Modeli 
* Veri tabanı sistemi ile evrensel ve hafif istemciler arasında yer alır. 
* Hem HTML üretimi, hem de uygulama mantığı PHP motoru üzerinde gerçekleşir. 
* Genel olarak Web tarafı ağır basan üç katmanlı yapıyı esas alır. 

Neden Php?- Verimlilik 
- Bakım kolaylığı 
- Taşınabilirlik 
- Uyumluluk 
- Performans 
- Hızlı Gelişim ve Yaygınlık 
- Ekonomik 


Verimlilik 
Web uygulamaları hızlı geliştirme gerektiren türde uygulamalardır. Bu nedenle bu alanda script dilleri ön plana çıkmışlardır. 

* Kod boyu kısalmalı. PHP web uygulamaları için yazılabilecek kod sayısını en dengeli düzeye çekmiş gibi görünüyor. PHP, yapmanız gereken işi en kısa yoldan yaparken işlevselliği de sınırlamıyor. İşlevselliği çok iyi olmasına karşın Java servletleri yazılması gereken kod boyunu aşırı artırıyor. 

* Hazır araçlar. PHP'nin fonksiyon kütüphanesi oldukça geniş. 4.0 versiyonunda 1729 fonksiyon tanımlı. Mail, FTP, LDAP ve HTTP gibi protokollerini kullanabilmek için RFC okumanıza gerek yok. Veritabanlarına erişim fonksiyonları işi kolaylaştırmış.Allaire firmasının Cold Fusion ürününde kullanılan CFML (Cold Fusion Markup Language) script dili kısa ve okunurluğu iyi olmasına karşın sadece 60 tag ve 200 fonksiyon ile sınırlanmış. Aynı şekilde ASP ile hazır gelen araçlar da oldukça sınırlı. 

* Yeniden kullanılabilirlik. PHP, nesneye yönelik programlama için destek veriyor. PHP kullanıcılarının hazırlamış olduğu kütüphaneler kullanılabileceği gibi kendi kütüphanelerinizi oluşturup kullanmanız da mümkün. 
Bakım Kolaylığı 
Web uygulamaları çok sık güncellenirler. Her defasında sıfırdan kod yazmamalısınız. Kod bakımı ve değiştirilebilmesi kolay ve hızlı yapılabilmelidir. 

* Okunurluk. PHP kodunun okunurluğu oldukça yüksek. Kısa olmalarına karşın Perl kodları uzman olmayan programcılar tarafından kolay okunamıyor. Tam tersine kodlama gereksinimi fazla olan java servletlerinde de geliştiricilerin birbirini miras alan sınıfları takip ederken kaybolması muhtemeldir. Ekibiniz her zaman perl veya java uzmanı programcılardan oluşmayabilir. 

* Modülerlik. PHP'nin include() ve requires() gibi fonksiyonları kodunuzu küçük ve mantıklı parçalara ayırmanıza yardım ediyor. Nesneye yönelik programlama teknikleriyle de modülerliği artırabilirsiniz. 

* Sunum ve iş mantığının ayrılması. PHPLib kütüphanesi veya kendi oluşturabileceğiniz template işleyici fonksiyonlar ile de kullanıcı arabirim tasarımını, iş mantığından ayırmınız çok kolay. Böylece web tasarımcıları koddan bağımsız olarak görünüme yoğunlaşırken, programcı görünümle hiç uğraşmadan arka planda çalışması gereken program mantığı üzerine yoğunlaşabilir. 


Taşınabilirlik 
Platformdan bağımsızlık sadece Java'nın sloganı değil. Geliştirdiğiniz uygulamaların değişik işletim sistemleri ve değişik web sunucuları üzerinde çalışabiliyor olmasını istemez misiniz? Bu konuda PHP'nin, java servletleri, JSP ve Perl dışında rakibi yok. 

* Web Sunucu Desteği. Yeni web sunucu arabirimi (Server API/SAPI) ile oldukça iyi bir soyutlama gerçekleştiriyor. 

* Apache (Apache Software Foud.) § iPlanet (Sun-Netscape Alliance) § IIS (Microsoft) § AOL Web Server (America Online) § Zeus (Zeus Tachnology) § Xitami (iMatix) § Roxen § Stronghold (C2Net) § OmniHTTPd (Omnicron Tech.) 

* İşletim Sistemi Desteği. Desteklediği sunucuların çalıştığı pekçok işletim sisteminde de sorunsuz çalışır. 

* Tüm Linux, Unix ve BSD türevleri § MS Windows95-98-2000Prof/Server § OS/2 § MacOS 

Uyumluluk 

PHP, çok sayıda açık sistem ve protokol ile birlikte çalışabildiği gibi hem de pek çok özelleşmiş sistem için yerleşik (native) arabirim desteği sunmakta. 
* Açık Sistem Protokolleri 
* HTTP/HTTPS § FTP § LDAP § SMTP § IMAP, POP3 § NNTP § SNMP § Socket Arabirimi 

(TCP/IP) 
* Yerleşik Veri Tabanı Arabirimleri 
* MySQL § mSQL § PostgresSQL § BerkeleyDB § MS-SQL § Interbase § Oracle § Sybase § 

DB/2 
* Açık Sistem Teknolojiler 
* ODBC § OpenSSL / X509 Sertifikaları § XML § PDF 


Performans 

*8 saniye kuralı. Web'de ziyaretçiler genellikle yüklenmesi 8 saniyeyi geçen sayfalardan vazgeçerler. Buna karşın çoğu kez bant genişliğiniz sınırlıdır. Toplam 35KB büyüklüğünde olan bir sayfa 56Kbps'lik bir modemle 7-8 saniyede çekilir. Bu süreye sunucu cevap süresi eklenecektir. 

* Cevap süresi (response time). Normalde web sunucusu dinamik bir sayfada script işletimi bitene kadar cevap göndermez. Bu sürenin de 1-2 saniyeyi aşmaması zorunludur. 

* CGI kullanan uygulamalar işletim sistemi tarafından görevlerin paralel olarak hafızaya yüklenmesi ve bunlar arasında geçişler gerektirdiği için CPU, RAM, zaman harcaması fazladır ve tutarsız davranırlar. Her seferinde yeniden veri tabanına bağlantı gerektirirler. 

* Server API'si kullanan modüller ise CGI'ya göre 15-20 kat hızlı çalışabilirler. PHP'nin SAPI kullanan modül versiyonu da bu avantajdan yararlanır. 

* Zend optimizer ile ara kod iyileştirmesi kullanılarak buna ek olarak %40 - %100 hızlanma elde edilebilir. 

* Yerleşik (native) veritabanı desteği verdiği için ODBC kullanan sistemlere göre de hızlıdır. 

* Sürekli veritabanı bağlantıları (persistent connections). Java servletlerindeki connection pooling mantığını programcıya saydam tutarak kullanır. 

* PHP standart görevler için ASP'de olduğu gibi COM nesneleriyle iletişim kurmak zorunda kalmaz. Bu tür işlevler sunucunun kendi hafıza alanı içinden çağrılır. 

* Önbellekleme. Zend Cache ve benzeri yazılımlar ile scriptler derlenmiş olarak hafızada tutulabilir. 
Hızlı Gelişim ve Yaygınlık 

* Açık kaynak kodlu. Bir çok ülkeden gönüllü geliştiricilere sahip. Hatalar çok çabuk bulunup düzeltiliyor. Pek çok web sunucusu ve işletim sistemine port edilmiş durumda. Kendi sisteminiz üzerinde PHP'den kaynaklanan bir sorun olursa en kötü durumda PHP koduna müdahale etme şansınız var. 

* Dünya üzerinde PHP kullanan domain sayısı 5.747.237, IP adresi sayısı ise 882.439 (Netcraft). 

* Apache üzerinde en yaygın kullanılan modül (Security Space / E-Soft Inc.). 
Module Mar 2001Count Mar 2001% Feb 2001Count Feb 2001% Growth% 

PHP 588124 38.68% 562725 37.82% 2.28% 
FrontPage 289505 19.04% 285097 19.16% -0.63% 
mod_ssl 194166 12.77% 178694 12.01% 6.33% 
perl 186722 12.28% 178713 12.01% 2.24% 
OpenSSL 179255 11.79% 163540 10.99% 7.26% 
ApacheJServ 63655 4.19% 61918 4.16% 0.60% 

Ekonomik 
* Tüm eklentileri ile birlikte ücretsiz. 
Gelişmiş Özellikler 
* Değişebilir Değişkenler 
* Kurallı İfadeler 
* Semafor ve Shared Memory 
* Yerleşik Oturum Desteği 
* Çıktı Yastıklama 
* Serialization 
* Java Desteği 
* Windows COM Desteği 
* XML ve SOAP Desteği 
* Şifreleme ve OpenSSL 


Değişebilir Değişkenler (variable Variables) 
PHP, Perl ve JavaScript'de olduğu gibi değişkenlerin çalışma anında tip değiştirebilmesine (type juggling) olanak sağlıyor. Bunun ötesinde değişkenler üzerinde çalışırken çok daha fazla esnekliğe sahipsiniz. 
$x="elma"; 
$$x="armut"; 

echo ${$i}; // ekrana 'armut' yazar 
echo $elma; // ekrana 'armut' yazar 
Aynı özellik fonksiyonlar için de kullanılabiliyor: 
if(...) 
$funct="ImageCreateFromPNG"; 
else 
$funct="ImageCreateFromJPEG"; 

$funct(...); // Çağrılacak fonksiyonu çalışma anında belirledik 
Kurallı İfadeler 
PHP kurallı ifadeleri (regular expressions) Perl kadar güçlü kullanabilir. Örneğin bir metindeki tüm 'elma' ları 'armut' yapabilirsiniz: 
$metin = preg_replace("/elma/i", "armut", $metin); 
Aynı sonucu java servleti kullanarak almak isteserseniz: 
String str1 = new String("elma"); 
String str2 = new String("armut"); 
int x = metin.indexOf(str1); 
while(x != -1) { 
metin = new String(data.substring(0, x) + 
str2 + metin.substring(x + str1.length())); 
x = metin.indexOf(str1); 

Pratikte ise bundan çok daha karmaşık metin içinde arama, değiştirme türü işlemlere gereksinim duyulur. 

Semafor ve Shared Memory 
§ Semafor kullanarak, 
§ Paralel çalışacak olan scriptleriniz arasında zaman uyumlama yapabilir. 
§ Eş zamanlı erişmemeleri gereken kaynakları kilitleyebilirsiniz. 
§ Shared memory kullanarak, 
§ Hafızada scriptlerinizin erişebileceği ortak alanlar tanımlayabilir, 
§ Bu alanlara her scriptin başında atanması gereken değişken değerlerini veya arama sonucu gibi dinamik ürettiğiniz verilerinizi koyarak önbellek (cache) gibi kullanabilirsiniz...







Blogger eklentileri


0 yorum :