Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ahmet İpek
Ahmet İpek
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
9 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: cookie gezginin ibaresi istemci istemcinin istemciye kullanici kurulum oldugunu paketi servisi sunucu sunucuya uygulama zamanda PHP 5 Ahmet İpek
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : PHP 5
Yayınlanma Tarihi : 16.1.2005
Okunma Sayısı : 40938
Yorum Sayısı : 3     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 24.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 24.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 24.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 24.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Seri 2 - PHP'nin Çalışma Prensipleri
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu yazıda bir PHP uygulamasının yaşam döngüsünü anlatmaya çalışacağım. Aşağıda görmüş olduğunuz şemada bir son kullanıcı isteminin döngüsü anlatılmıştır.

Sunucuya Erişilmesi:

Son kullanıcı (istemci), sunucu adını internet gezginin (internet explorer) adres bölümüne girer. Gezgin bağlı bulunduğu DNS (Domain Name Server)’dan sunucunun IP (Internet Protocol) adresini çözümledikten sonra aynı adrese 80. port (kapı) ’dan "GET / HTTP/1.1" istemini yollar. Bu istem sunucu tarafında 80. port’u dinlemekte olan http servisi tarafından karşılanır. RCF protokolüne göre istemi yorumlayan http servisi istemciye daha evvelden konfigre edilmiş, ilgili klasördeki kullanıcıların ilk erişilmesini istediği dosyayı yollar. Eğer bu dosya konfigrasyonda belirtilmiş statik html olamayan bir uygulama dosyası ise dosya yollanmadan önce ilgili uygulama çağırılır.

Aşağıda bir istemcinin sunucuya gönderdiği paketi görebilirsiniz. İlk satır HTTP 1.1 standartlarına uygun bir istem gönderildiğini göstermekte. "GET /" ibaresi ise o klasörün index’nin istendiğini belirtmekte. Ardından gelen "Accept" başlığı, kullanılan gezginin kabul ettiği dosya tiplerini göstermekte. Html sayfalarının transferinin hızlandırılması için text olan html sunucu tarafından istemciye yollanmadan önce gzip ile sıkıştırılır. "Accept-Encoding gzip" ibaresi de istemcinin bu sıkıştırılmış html’lerin çözebileceğini göstermektedir; bu şekilde sunucu html’i yollamadan sıkıştırıp sıkıştırmamasına karar verir. "Accept-Language tr" istemcinin talep ettiği konuşma dilini belirtmektedir."Connection Keep-Alive" istemci ile sunucu arasında kurulan bağlantının (TCP/IP soketlerinin) kullanıcı tarafı kapanmadıkça bir sonraki işlem için açık tutulmasını sağlar. Bu şekilde sunucu tarafında SESSION (oturum) tutulabilir çünki http servisleri bir kullanıcının daha evvel oturup açıp açmadığını TCP/IP soketlerine (daha evvel açtığı bağlantılara) bakarak karar verirler. Bilgisayarınızda açılan TCP/IP soketlerinin durumunu görmek için komut satırına netstat -n yazmanız yeterlidir. "Cookie" sunucu tarafından istemci tarafına atılan ufak text bilgilerdir. Bunlar sunucuya istemci tarafından aşağıdaki gördüğünüz şekilde iade edilir , bu sayede sunucu istemciye daha evvel hangi bilgiyi yazdığını hatırlar. Bu demek oluyorki cookie’ler değiştirilebilir veya görüntülenebilir bu yüzden cookielere şifre gibi önemli verileri işlemek sakıncalı olabilir."Host" başlığı HTTP 1.1 standartı ile gelmiştir, eklenme amacı sanal barındırmalarda bir sunucu üzerinde birden fazla site (host) olabilir, bu durumda bu başlık hangi host’a ulaşmak istediğinizi belirtmektir. "If-Modified-Since" eğer son ziyaretinizden beri sayfa üzerinde bir değişiklik yoksa o zaman sayfa gezgin tarafından istemci tarafındaki bellekten çekilir."User-Agent" istemci tarafında kullanılan gezginin spesifikasyonlarını belirtir. Örneğin bu başlıkta istemcide .NET framework 2.0 çalıştırmanın mümkün olduğu gözükmekte; bu şekilde .NET 2.0 ile yazılmış ActiveX leri çalıştırabileceğini anlıyoruz. (ActiveX: istemci tarafında çalışan windows uygulamaları)

İstemci Paketi (istemcinin 80. porttan sunucuya gönderdiği text)
GET / HTTP/1.1
Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Encoding gzip, deflate
Accept-Language tr
Connection Keep-Alive
Cookie COUNTRY=TUR%2C81.214.132.213; LAST_LANG=en
Host www.php.net
If-Modified-Since Tue, 04 Jan 2005 09:10:48 GMT
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607)
PHP Dosyalarının Yorumlanması ve Derlenmesi:

PHP sunuculara iki farklı şekilde yüklenebilmektedir. Pek güvenli olmamasına rağmen PHP http servisi ile bağlantısı olmadan kendi başına çalışsabilen CGI olarak veya http servisinin bir modülü olan ve daha perforymanslı çalışan SAPI olarak da kurulum gerçekleştirilebilir. CGI yapısında http servisi php.exe uygulamasına PHP dosyasını yollar, php.exe yorumlama ve derleme işlemini gerçekleştirdikten sonra çıktısını http servisine iade eder; bundan sonra http servisi bu çıktıyı kullanıcıya iletir. PHP’nin http servisi ile entegre olmamasın dolayı PHP’nin CGI olarak tanıtılması performans kayıplarına ve güvenlik açıklarına neden olmaktadır ve bu açıkların kapatılması büyük iş gücü istemektedir.Bu yüzden diğer çalışma prensibi olan SAPI üzerinde yoğunlaşmak daha uygun; yukarda görmüş olduğunuz şema da SAPI tanımına göre yapılmıştır.

Http servisinin bir modülü olarak kurulan PHP, herhangibi php uygulaması http servisi tarafından tetiklendiğinde devreye girer ve php dosyasını ilk önce kendi içerisinde bulunan yorumlayıcı tarafından okur. Ardından Zend Motoru içerisinde çalıştırılabilir bir şekilde hafızaya yükler ve çalıştırma zamanı içerisinde gerekli kütüphaneler ile ilişkiler kurulup çıktı sağlar. Bu süreç içerisinde tüm işlem için gereken hafıza ve CPU kaynaklarını http servisinden teymin eder veya harici bir kaynağa erişmeye çalıştığında Http servisi kimliği ile işlemlerini gerçekleştirmeye çalışır.Kısacası Http servisi bir kılıf gibi PHP’yi sarmaktadır. Kurulum bölümü esnasında bu işleme prensiplerini göze alarak güvenlik ayarlarımızı şekillendireceğiz.

PHP uygulaması http servisi tarafından tamamlandıktan sonra istemciye aşağıdaki gibi bir cevap döndürür. "HTTP/1.1 200 OK" ibaresi istemin standartlar içerisinde olduğunu ve cevabının sağlıklı döneceğini belirtmektedir. "Connection close" aradaki bağlantının sonlandırıldığını belirtmektedir. "Content-language en" döndürülen cevabın dilini belirtmektedir. "Content-Type text/html;charset=ISO-8859-1" döndürülen içeriğin text ve http olduğunu aynı zamanda text’in karater tanımının iso-8859-1 olduğunu belirtmektedir. Türkçe için iso anahtarı iso-8859-9 ’dur bunu sunucu tarafında kurulum esnasında düzenlememiz gerekmekte. "Server" sunucunun tipini ve üzerinde yüklü mödülleri göstermekte. Esasında bu güvenlik açısından sakıncılı çünki uygulamanıza saldırmak isteyen kişilere PHP ve APACHE sürümünüzü vermiş oluyorsunuz. bu şekilde debug listelerine bakıp bu açıklardan faydalanmak isteyebilirler; gene kurulum tarafında bundan kurtulmak için ne yapmamız gerektiğini görücez. Aynı zamanda w3 ’ün yaptığı hangi sunucu daha fazla kullanıyor istatistikleride bu cevaplar ile yapılmakta. "X-Powered-By" yaptığınız işlem sonucu eğer sunucu tarafında bir uygulama çalışmış ise bu başlık hangi uygulamanın çalıştığını göstermektedir.

Sunucu Paketi (istemciye gönderilen text cevap)
HTTP/1.1 200 OK
Connection close
Content-language en
Content-Type text/html;charset=ISO-8859-1
Date Sat, 08 Jan 2005 14:26:40 GMT
Last-Modified Sat, 08 Jan 2005 14:18:38 GMT
Server Apache/1.3.26 (Unix) mod_gzip/1.3.26.1a PHP/4.3.3-dev
Set-Cookie COUNTRY=TUR%2C195.174.96.129; expires=Sat, 15-Jan-05 14:26:40 GMT; path=/; domain=.php.net
Via 1.1 TTCache01 (Jaguar/3.0-59)
X-Powered-By PHP/4.3.3-dev <html>
....
</html>
PS: GTK+ ’daki gelişmeler ile PHP ile göresel programlamanın artması sonucu PHP 4.3.0 ile yeni bir SAPI (Server Application Programming Interface) türü olan CLI (Command Line Interface) gelişmiştir. Sunucu tarafında SAPI olarak çalışan PHP aynı zamanda görsel programlamalar içinde giriş noktası oluşturan çalıştırılabilir php dosyasınıda içermekte (CLI). GTK+ Bölümünde bu konunun detaylarından bahsedeceğiz.

Önemli: Web programlamasında en çok karıştırılan konulardan biride çalışma prensipleri ile alakalı olan Web tabanlı Sunucu ve Istemci ilişkisidir. Son kullanıcı bir istem yolladıktan sonra bu http servisi her istemde olduğu gibi ayrı ve diğer benzer işlem süreçlerinden bağımsız bir işlem süreci açar. Ardından çıktı statik olarak sunucu aracılığı ile istemciye iade edilir. Şu çok önemlidir ki iade işlemi sonrasında bu işlem süreci yok edilir. Yani açılan herhangibi işlem bir öncekini hatırlamaz veya bir benzeri ile bağlantı kurup hayatta kalamaz. (Bu pararafın biraz anlamsız geldiğini biliyorum fakat zaman içerisinde anlamanız daha mümkün.)

Örneğin üyelik gibi süreklilik gerektiren işlemlerin sağlanamabilmesi için sunucu tarafında SESSION (oturum), kullanıcı tarafında COOKIE (çerez) kavramları gerçekleştirilmiştir. Sunucu kullanıcıdan cookie bilgisini aldıktan sonra kendisinde bulunan oturum bilgisi ile karşılaştırıp daha evvel bu kullanıcıyı tanıdığını tespit eder ve kaynaklara erişimini mümkün kılar.Kısacası kullanıcı ile sunucu haberleşmelerini parçalanmış bir şekilde adım adım yapar, yani bir süreklilikten (kesilmeyen haberleşmeden) bahsedilemez.

* http: (Hyper Text Transfer Protocol)

Makale:
Seri 2 - PHP'nin Çalışma Prensipleri PHP ile Programlama Ahmet İpek
  • Yazılan Yorumlar
  • Yorum Yaz
AĞU
21
2006
VERİLEN BİLGİER MANTIĞA YATKIN AMA ŞEMALARLA ANLATIM ARTTIRILIRSA ÇOK DAHA HOŞ OLACAK BENCE.....
OCA
19
2005
doğrusunu söylemek gerekirse ben de burada php5 ile birşeyler bulduğuma şaşırıyorum. Kaç zamandır php5i araştırıp öprenmeye çalışıyorum. bu ilki güzel olmuş umarım devamı da gelir. Tebrik ederim
OCA
18
2005
PHP ile ilgili makale içeriği başlangıç olarak çok güzel olmuş, elinize sağlık. Şahsen şaşırdığım nokta, temel olarak Microsoft platform ve araçlarını anlatan sitede açık kod ile ilgili bölümünde açılmış olması, hayret, şaşıtıcı doğrusu. Devamının gelmesi dileği ile.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor