Avatar billede naxosnaxos Nybegynder
21. august 2003 - 10:49 Der 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++

På forhånd tak.
Avatar billede arne_v Ekspert
21. august 2003 - 10:57 #1
PHP helt klart.

Jeg ved ikke om man kan sige at CGI er forældet.

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.
Avatar billede jakoba Nybegynder
21. august 2003 - 11:11 #2
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.
Avatar billede jakoba Nybegynder
21. august 2003 - 11:14 #3
se http://dk.php.net/manual/en/function.exec.php for et generelt interface til operativsystemet og alt hvad det kan gøre.
Avatar billede mfalck Praktikant
21. august 2003 - 11:25 #4
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å.
Avatar billede arne_v Ekspert
21. august 2003 - 11:35 #5
mfalck>

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.
Avatar billede naxosnaxos Nybegynder
21. august 2003 - 11:39 #6
Men hvordan hvis nu man skal kommuniker med en appliaktion der ligger på web serveren?? kan man det fra både cgi/perl(eller andet) og php??
Avatar billede mfalck Praktikant
21. august 2003 - 11:40 #7
korrekt, men det kommer an på opsætningen - PHP kan også køre som cgi-program og perl kan køre som fortolket via mod_perl
Avatar billede mfalck Praktikant
21. august 2003 - 11:43 #8
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 ?
Avatar billede arne_v Ekspert
21. august 2003 - 11:44 #9
2*naxos>

Hvilken slags applikation ?
Avatar billede mfalck Praktikant
21. august 2003 - 11:46 #10
skal måske lige forklare lidt nærmere;

hvis du f.eks. bare ønsker at køre "useradd brugernavn" og skrive på skærmen "Brugeren "brugernavn" er oprettet" så tror jeg det er hip som hap.

Hvis du ønsker at læse f.eks. fra enden af en logfil og vise det på skærmen så tror jeg at du skal bruge perl.
Avatar billede naxosnaxos Nybegynder
21. august 2003 - 11:55 #11
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??
Avatar billede mfalck Praktikant
21. august 2003 - 11:57 #12
hvis du lægger data i en mysql database så har php indbyggede funktioner til at trække dem ud.
Avatar billede mfalck Praktikant
21. august 2003 - 11:58 #13
php kan kommunikere med en lang række databaser Oracle, mssql, mysql, postgres, sybase ...
Avatar billede arne_v Ekspert
21. august 2003 - 12:00 #14
Du kan kalde C/C++ kode fra PHP.

Du kan lave database adgang fra PHP.

Du kan læse fra en fil fra PHP.

Det er muligt men ikke nødvendigvis nemt at lave process til
process kommunikation mellem PHP og en kørende applikation.
Avatar billede mfalck Praktikant
21. august 2003 - 12:01 #15
i perl kan man godt kalde C-lib funktioner via XS, men hvor lige til det er ved jeg faktisk ikke.
Avatar billede naxosnaxos Nybegynder
21. august 2003 - 12:04 #16
Hvordan kalde C/C++ kode fra php?? er det funktioner eller.....
Nogle eksempler please ;o)
Avatar billede arne_v Ekspert
21. august 2003 - 12:07 #17
Du loader en DLL eller SO med dl, se:
  http://dk.php.net/dl
Avatar billede arne_v Ekspert
21. august 2003 - 12:10 #18
(jeg har aldrig brugt det - jeg ved kun at det kan gøres)
Avatar billede naxosnaxos Nybegynder
21. august 2003 - 16:11 #19
hvis nu lige mFalck smider et svar kan i få lidt points hver...
Avatar billede mfalck Praktikant
21. august 2003 - 18:19 #20
okie
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester