21. august 2003 - 10:49Der er
18 kommentarer og 2 løsninger
php kontra cgi
Skal bruge lidt ekspert viden.
ARbejder på et projekt hvor der skal benyttes enten PHP eller CGI. Der benyttes en apache webserver. Enten skal der skrives til filer eller en database. Nu kunne jeg så godt tænke mig lidt viden om hvordan man afgør valget mellem php og cgi. Hvilke fordele ulemper opnår man med de 2 teknologier?? Er CGI ved at være lidt forældet??
Måske skal der desuden kommunikeres med et program kodet i C/C++
Men CGI er en gammel teknologi og en meget generel teknologi. Du kan bruge CGI på alle platforme i alle programmerings-sprog. Det koster i performance.
PHP er nyere og mere specialiseret. Jeg er overbevist om at du skal skrive mindre kode og at koden vil køre hurtigere med PHP.
Der er glimrende mulighed for database i både PHP og CGI.
Jeg mener bestemt at du kan kalde C kode fra PHP (spørg mig ikke om hvordan).
Du kan godt kalde C kode fra CGI - bl.a. kunne du jo lave dit CGI script i C.
Helt klart enig. CGI, perl osv var første forsøg på serverside programmering php er andet eller tredie forsøg og har draget nytte af en masse erfaringer vi har høstet siden da.
Jeg tror der er lidt begrebsforvirring her; CGI er en måde webserveren kommunikerer med programmer, mens PHP er et programmeringssprog. Måden CGI fungerer på er ved at sætte en række miliøvariable som programmet så kan trække på (f.eks. POST og GET parametre). På sin vis benytter PHP sig af den samme teknik.
Endvidere tror jeg måske det er en overforsimpling at sige at CGI er langsommere end PHP. Hvis man f.eks. som Arne selv påpegede koder sit CGI program i C så kan jeg ikke forestille mig at det vil køre langsommere end et PHP program som trods alt skal parses og derefter eksekveres, hvormod C programmet blot er en process der startes op. Det er omvendt korrekt at hvis dit cgi-program er skrevet i perl, python eller lign så skal disse scripts også oversættes og fortolkes. Her har PHP den fordel at det som regel er oversat ind i apache-serveren og derfor ikke kræver opstart af en seperat process. Men det kan lade sig gøre via mod_perl at køre perl direkte fra apache også.
Der er en vigtig pointe nemlig, at CGI (normalt) starter en ny process/subprocess hver gang man kører et script. Det overhead kan i de fleste tilfælde nemt opveje compilet over fortolket gevindsten.
det kommer lidt an på hvad du mener med "kommunikerer" med et program - ønkser du at køre det og så præsentere outputtet fra dit program eller er det via RPC, named pipes eller andet ?
Hvis nu jeg har en C++ applikation som kører på samme maskine som webserveren. kan jeg så kalde funktioner fra PHP via et library som php og c++ applikationen deles om. Eller kan man lave process kald fra php og starte en proces eller lign. på serveren?? Hvis nu man skulle udveksle data mellem php o c++. C++ programmet opsamler data på serveren. disse data skal så præsenteres i en browser, her kommer valget ind med php eller cgi(perl). hvis nu ikke de opsamlede data ligger i en fil eller database, hvordan får man så fat i dem via php??
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.