PDA

Visualizza la versione completa : Interazione tra C e Php


XWolverineX
15-01-2008, 09:40
Sono un programmatore di C e C++ prevalentemente, e chiedo aiuto a voi.

Devo creare un programma in C che fa determinate operazioni, che però devono essere compiute dal web.
In pratica, da una pagina web mi servono 3-4 parametri da passare al programma in C, che a sua volta ritornerà un valore per confermare l'operazione.
A corto di idee, avevo pensato a un exec in php con il programma, ma non mi sembra una buona soluzione.

Come potrei fare?

Mich_
15-01-2008, 10:08
E` un argomento affrontato piu` volte in passato in questo forum. Ti consiglio pertanto di fare una ricerca nel forum (bottone in alto).

Ti premetto che e` possibile realizzare dei CGI in C.
Ma anche la chiamata da PHP ad un programma C non la vedo cosi` male: ci perdi solo un po' di tempo e di potenza del server, per cui devi valutare se sono variabili importanti nella tua situazione o sono trascurabili. Sicuramente il C e` piu` performante (e` compilato, non interpretato), ma se la cosa succede una volta all'ora puo` essere trascurabile; se invece prevedi varie interazioni al minuto, forse la cosa diventa fondamentale per la buona salute del server.

XWolverineX
15-01-2008, 10:22
La chiamata da PHP può funzionare si.
Però volevo realizzare un CGI per 2 motivi

1) Si impara qualcosa di nuovo
2) Sarà un programma usato MOLTO, anche un migliaio di volte in un'ora!

Intanto cerco sul forum!

shishii
15-01-2008, 22:04
E' possibile creare CGI in qualunque linguaggio capace di ricevere dati dallo standard input (metodo POST) o dalla variabile ambientale QUERY_STRING (metodo GET) e capace di emettere un output testuale, quindi sicuramente è possibile farlo anche in C++ oltre che in C.

Mi pare che per il C esista la libreria cgilib.h o simile.

Se le operazioni sono semplici e ripetitive è molto conveniente usare il C al posto di PHP.

XWolverineX
16-01-2008, 15:44
Ho letto un pò in giro e ho trovato che in C per ricevere la variabile QUERY_STRING si può utilizzare la funzione getenv

Resta però da capire come arrivano i dati nella stringa
Il metodo GET lo conosco: è fatto secondo il formato

?parametro1=ciao&parametro2=salve

Nel metodo POST (che vorrei usare io), come arrivano i dati??

shishii
16-01-2008, 17:56
i parametri inviati tramite metodo POST vengono passati dal webserver al programma CGI tramite lo standard input, come se fossero stati digitati da tastiera. In Perl la funzione per raccogliere i parametri passati così è:



read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});


che fa questo:

inserisce nella variabile stringa $buffer i dati provenienti dal filehandle STDIN (standard input) fino alla lunghezza massima di quanto passato dal client al webserver ($ENV{'CONTENT_LENGTH'}).

XWolverineX
17-01-2008, 09:45
Fin qui ok.
Su internet ho letto che la stringa QUERY_STRING, nel caso in cui sia stata fatta col metodo GET, sarà di questo tipo



param1=Ciao&param2=Salve


Sapendo che la struttura è cosi, ho capito come "parsarla"

Ma se io creo la stringa tramite il metodo POST, la stringa come sarà?

shishii
18-01-2008, 19:27
la stringa è esattamente uguale. Quello che cambia è il meccanismo di comunicazione.

XWolverineX
20-01-2008, 20:09
Ottimo allora!!!
Domanda!

La differenza sostanziale tra metodo GET e POST...non è meglio usare sempre il POST che tiene i dati "nascosti"?

shishii
20-01-2008, 20:34
per prima cosa c'è da dire che sono nascosti per modo di dire. In realtà sono leggibilissimi.

Secondo il metodo POST è più pesante del GET.

terzo non si può usare per passare parametri tramite l'URL.

Quindi dipende da quello che devi fare.

Loading