Nasıl Apache PHP arayüzü yapar?

4 Cevap php

Neredeyse (gibi hiçbir ticari kullanım, bu sadece eğlence için) Java altında HTTP/1.0 uyumlu web sunucusu yazmayı bitirdim ve temelde PHP desteği eklemek istiyorum. Bu hiç kolay bir iş olduğunu biliyoruz, ama ben güzel bir başarı olacak düşünüyorum.

Yani PHP tam olarak Apache web sunucusu (ya da gerçekten başka bir web sunucusu) ile arayüzleri nasıl bilmek istiyorum, bu yüzden ondan öğrenmek ve kendi PHP sarıcı yazabilirsiniz. Bu mutlaka mod_php olmak zorunda değildir, ben bir FastCGI sarıcı yazma umursamıyorum - bilgime yanı PHP çalıştırabilen olan.

Ben tüm bu PHP istemci gider çıkış ihtiyacı (yani PHP parçaları yorumlamak), istemci tam HTTP isteği (yani POST değişkenleri ve bu özü) ve müşterinin ana bilgisayar adı düşündüm olurdu. Ve o zaman sadece çözümlü PHP kodu alıp çıktı akımına olduğunu yazmak. Muhtemelen daha şeyler olabilir, ama özünde ben çalıştığını sanırdım nasıl olacak.

Ben şimdiye kadar toplanan kadarıyla, apache2handler PHP için kullanımını Apache 'bağlanmak' yapan bir API sağlar. Ben apache2handler ve php5apache2.dll ya da öylesine için kaynak koduna bakmak için bir fikir, ama ben düşündüm bunu önce ben SO ilk sorardım.

Kimse daha fazla bilgi, deneyim, ya da bu alakalı şartname çeşit varsa o zaman lütfen bana bildirin.

Şimdiden teşekkürler!

4 Cevap

PHP, Apache çağrılabilir 3 yolu vardır:

1) bir modül olarak - bu web sunucusu tarafından yayınlanan kanca bir kütüphane karşı php tercüman bağlantı içerir

2) CGI - webserver her istek için tercüman bir örneğini başlatır ve stdin yoluyla tercüman parametreleri geçirir, komut satırı ve ortam değişkenleri stdout istemci ve stderr'e gönderilen error_log yazılmalıdır

3) FASTCGI - bu, her istek için yeni bir süreç başlıyor ve yükünü ortadan kaldırır - tercüman bir daemon olarak çalışır

CGI uygulamak için basit ama iyi performans / ölçek değildir, modül tarafından çok zor olurdu. FastCGI modül yaklaşım yaklaşık olarak hızlı. CGI ve FastCGI, iyi belgelenmiş API'leri açıktır.

Hedefe ulaşmanın başka yolları vardır - örneğin Quercus

C.

Basitçe söylemek gerekirse, bu nasıl işliyor:

Apache normal dosyayı getiriliyor ve HTTP bağlantı aşağı akışı göndererek dosyaları sunmaktadır. PHP ile, ancak, Apache, dosyayı getirir PHP ikili içine borular onu, ve HTTP bağlantı aşağı komutu output akım gönderir.

The key word is CGI.
It is dramatically simple protocol, which serving web-servers for ages.
It is not the only way for PHP to interact with a web-server, but most common and easy to implement one.

Kısacası, sunucu bazı ortam değişkenleri kurmak, ve sonra sadece bir php script kendisi bir cgi-script çağırmalıdır.