html code durch c++ / oder ähnlicher Sprache zurückgeben.

Alles, was den Apache betrifft, kann hier besprochen werden.

html code durch c++ / oder ähnlicher Sprache zurückgeben.

Postby Nick123321 » 04. November 2013 19:52

Hallo an alle!
Ich habe da mal eine vermutlich seltsame Frage. Ich habe mich eigentlich gewundert, warum man immer den Zwischenschritt über PHP macht. Also zum Beispiel bei Communitys: User requestet das php document, dieses wird auf dem Server ausgeführt, und gibt html zurück. Aber PHP ist 1) unperformant 2) hat viel weniger Möglichkeiten als z.B. C++ (Ich denke jetzt zum Beispiel an eine vernünftige User Verwaltung / und das aktuelle Besucher z.B. jeweils einen Prozess bekommen.

Jetzt meine Frage:
Geht es nicht, das der User auf den Server zugreift, Apache die URL übergeben bekommt (z.B. http://domain.de/login.php), und ich damit per C++ oder einer anderen Systemnahen Programmiersprache direkt auswerten kann und html Quellcode zurück geben kann?

Es kann natürlich sein, das ich einiges Übersehe, aber ich persönlich kann mir zum Beispiel nicht vorstellen das Facebook / Google mit PHP arbeitet.
Wenn es geht, kann mir jemand vielleicht irgendwelche Research Begriffe empehlen?

Wünsch euch allen noch einen schönen Abend, und hoffe ihr habt mich so einigermaßen Verstanden!

Liebe Grüße
Nick
Nick123321
 
Posts: 1
Joined: 04. November 2013 19:43
Operating System: Windows

Re: html code durch c++ / oder ähnlicher Sprache zurückgeben

Postby Altrea » 05. November 2013 06:36

Hallo Nick,

Nick123321 wrote:Ich habe mich eigentlich gewundert, warum man immer den Zwischenschritt über PHP macht.

Reine PHP Entwickler wundern sich immer, warum andere Hochsprachen immer den Zwischenschritt des Kompiliervorgangs machen, wenn Scriptsprachen Laufzeit-Interpreter soviel angenehmer sind. Es sind zwei unterschiedliche Philosophien die jeweils Vor- und auch Nachteile haben.

Nick123321 wrote:Aber PHP ist 1) unperformant

Das ist eine sehr pauschale Aussage. Die Performance einer Technologie kann man nicht per se beurteilen, ohne die Rahmenbedingungen und Ziele definiert zu haben. Wenn es darum geht im Millisekundenbeich Anfragen zu Beantworten magst du recht haben, da hat eine Interpretersprache deutliche Nachteile gegenüber vorkompiliertem Maschinencode. Im Web sind die Anforderungen aber andere und die Flaschenhälse damit auch.
Die Antwortzeit eines reinen prozeduralen PHP-Scripts ohne externe Schnittstellen (Datenbankzugriffe, etc) ist kaum erwähnenswert denn sie braucht nur einen Bruchteil länger als wenn der HTTP Daemon eine reine HTML Seite ausliefern müsste (auch dies sollte man pauschal nicht wörtlich nehmen, denn es gibt unterschiedlichste Schnittstellen PHP und HTTPD zu verbinden die unterschiedlich performant sind). Viele in PHP integrierte Bibliotheken sind in C geschrieben und kompiliert und werden vom Interpreter nur angetriggert.

Nick123321 wrote:2) hat viel weniger Möglichkeiten als z.B. C++ (Ich denke jetzt zum Beispiel an eine vernünftige User Verwaltung / und das aktuelle Besucher z.B. jeweils einen Prozess bekommen.

Auch dies ist eine sehr pauschale wenn nicht sogar subjektive Aussage. Ich denke dass du noch garnicht in der Lage bist den Umfang und die Möglichkeiten von PHP zu beurteilen.
Was genau verstehst du unter User Verwaltung und was missfällt bzw. gefällt dir hier bei der einzelnen Programmiersprache?
Was Prozesse und PHP betrifft so gibt es auch hier Mittel und Wege asynchrone Prozesse zu bewerkstelligen. Die Frage ist nur, welche Vorteile es einem bringt bzw. welches Ziel man erreichen möchte. Wie Sinnvoll das ist hängt also wieder stark von den Rahmenbedingungen ab.

Nick123321 wrote:Geht es nicht, das der User auf den Server zugreift, Apache die URL übergeben bekommt (z.B. http://domain.de/login.php), und ich damit per C++ oder einer anderen Systemnahen Programmiersprache direkt auswerten kann und html Quellcode zurück geben kann?

Natürlich. Anstatt einen PHP Interpreter kannst du auch direkt einen C Laufzeit Interpreter über CGI, FCGI oder einer anderen Schnittstelle mit einem HTTP Daemon koppeln.
Du kannst auch eigene PHP Erweiterungen in C schreiben und in PHP integrieren. Die Möglichkeiten sind mannigfaltig.

Nick123321 wrote:ich persönlich kann mir zum Beispiel nicht vorstellen das Facebook / Google mit PHP arbeitet.

Google nutzt mit Python eine andere Scriptsprache und koppelt eng mit Google HTTPD Servern. Facebook nutzt eine eigenentwickelte Erweiterung zu PHP mit dem Namen HipHop die aus PHP Code C++ Code macht der dann über einen C++ Compiler weiterkompiliert werden kann.
Der überwiegende Teil der Top 1000 Weisites nutzen aber tatsächlich (auch) PHP. Viele hochfrequentierte Webservices nutzen übrigens (auch) Java. Vielleicht wäre das auch eine Alternative für dich.

Apache HTTPD zum Beispiel ist auch nicht der performanteste HTTP Daemon, wohl aber ein sehr funktionsreicher (und deshalb beliebter). Wenn es dir da um Performance geht schaust du dir wohl lieber NGinx an, oder vielleicht auch eher IIS.

Nick123321 wrote:Wenn es geht, kann mir jemand vielleicht irgendwelche Research Begriffe empehlen?

Welche Suchbegriffe sich anbieten hängt davon ab was du letztendlich erreichen möchtest.

Mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: html code durch c++ / oder ähnlicher Sprache zurückgeben

Postby Nobbie » 05. November 2013 14:05

Nick123321 wrote:Aber PHP ist 1) unperformant


Natürlich ist compilierter und gelinkter C-Code schneller (deutlich sogar), aber dennoch ist PHP nicht "unperformant". Für die allermeisten Anforderungen im Internet liegt das Bottleneck zudem NICHT bei der CPU-Rechenzeit (und nur dort ist compilierter Code schneller), sondern im IO-Verhalten (Datenzugriffe, HTML Ausgabe). Nur bei extrem rechenintensiven Anforderungen mit nahezu Null IO lohnt sich eine C-Programmierung. Ein praktisches Beispiel: ich selbst habe mal eine "sudoku" Lösungsmaschine auf Basis von PHP gebaut. Den gleichen Code habe ich in C nachprogrammiert und die Performance verglichen. Da wird natürlich brutal viel gerechnet und da ist das C-Programm 10 bis 100 mal so schnell wie das PHP Programm. Aber bei fast allen normalen Communities usw. bringt es keinen Vorteil.

Dafür hat aber PHP den Vorteil, WEIL es ein Interpreter ist, steht es ad hoc auf allen Systemen zur Verfügung, wo es einen PHP Interpreter gibt und es ist für den Entwicklungsprogrammierer extrem einfach zu bedienen und es ist kompatibel.

Nick123321 wrote:2) hat viel weniger Möglichkeiten als z.B. C++ (Ich denke jetzt zum Beispiel an eine vernünftige User Verwaltung / und das aktuelle Besucher z.B. jeweils einen Prozess bekommen.


Das stimmt in mehrfacher Hinsicht nicht.

a) PHP hat nicht weniger Möglichkeiten als C/C++. Im Grunde gibt es nichts, was man damit nicht programmieren kann.

b) Außerdem gibt es eine gewaltige (und ständig wachsende) Bibliothek an Funktionen und Klassen, die zudem teilweise sehr auf den Zweck "Online Programmierung" optimiert sind. U.a. bietet PHP natürlich Schnittstellen zu standardisierten User Verwaltungen an (LDAP, Apache Authorize usw.).

c) Und die Geschichte mit dem "eigenen Prozess": da fehlen Dir offensichtlich Grundlagen der HTTP Technologie. HTTP ist ein zustandsloses Protokoll, bzw. eine transaktionierende Umgebung, da werden keine Prozesse für Login o.ä. gestartet. Das wäre konzeptionell auch überhaupt nicht realisierbar, stelle Dir mal einen Server vor, an dem sich gerade 10.000 Leute "angemeldet" haben. Wie soll ein Betriebssystem 10.000 Prozesse nur für das Loginsystem verwalten?

Nick123321 wrote:Jetzt meine Frage:
Geht es nicht, das der User auf den Server zugreift, Apache die URL übergeben bekommt (z.B. http://domain.de/login.php), und ich damit per C++ oder einer anderen Systemnahen Programmiersprache direkt auswerten kann und html Quellcode zurück geben kann?


Natürlich geht das, dafür gibt es die standardisierte CGI Schnittstelle. Hier kommt aber der nächste Vorteil zum Tragen: in C/C++ musst Du selbst das HTTP Protokoll (die Kommunikation zwischen Server und Browser) auseinanderfrickeln und die Requestdaten aufbereiten und zur Verfügung stellen. Damit sind die HTTP Header gemeint, inkl. Cookies, dazu die Übetragungsparameter sowie die eigentlich Daten eines GET oder POST Requests. in Php "müßte" man das theoretisch auch - aber das wird schon seit vielen Jahren vom Standard Stardmodul des PHP Interpreters übernommen, wenn Dein PHP Script endlich aktiviert wird, stehen sämtliche Daten des Requests in appetitlichen Variablen usw. zur Weiterverarbeitung standardisiert zur Verfügung.

Nick123321 wrote:Es kann natürlich sein, das ich einiges Übersehe, aber ich persönlich kann mir zum Beispiel nicht vorstellen das Facebook / Google mit PHP arbeitet.


Es gibt außer PHP noch andere vergleichbare Serversprachen, mit Sicherheit ist keines der genannten Produkte in nativem C programmiert. So viel bringt das nicht (s.o.), weil das keine sehr rechenintensiven Dinge sind, die da gemacht werden.

Nick123321 wrote:Wenn es geht, kann mir jemand vielleicht irgendwelche Research Begriffe empehlen?


Mit Sicherheit grundsätzlich alles über das Protokoll HTTP sowie weiterführend über die Schnittstelle CGI. Da gibt es sicherlich Millionen von Einträgen im Internet.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 18 guests