Bonjour,
Est-il possible à un CGI C d'interroger une base de données MYSQL ?
Je l'avais fait sur un autre projet mais avec un base Oracle.
Merci de vos réponses.![]()
Bonjour,
Est-il possible à un CGI C d'interroger une base de données MYSQL ?
Je l'avais fait sur un autre projet mais avec un base Oracle.
Merci de vos réponses.![]()
Oui, mais franchement, le PHP est fait pour ça, alors ne t'en prive pas.Envoyé par licorne
C'est vrai et comment faire compliqué quand on peut faire simple...Envoyé par Emmanuel Delahaye
J'ai mis en place dans mon site un moteur de recherche. Au début je l'avais développé en PHP. Mais les temps de réponse ne me satisfaisaient pas.
Je l'ai donc redéveloppé ma fonciton recherche en C et là côté temps de réponse il y a eu un net progrès.
Donc j'ai un prog PHP qui appelle un exécutable C en lui passant en paramètre le nom du fichier et le critère. Cet exécutable effectue la recherche et renvoie le nombre d'occurences trouvées.
Seulement voilà tant si l'utilisateur attend sagement le résultat il n'y a aucun problème. S'il rafraichit la page ça plante le serveur.
Donc on m'a conseillé de lancer l'exécutable C en tant que CGI.
Et la j'avoue que je ne maîtrise pas tout.
1- Ce CGI doit-il être indépendant et afficher le résultat dans une nouvelle page ?
2- J'ai besoin de contrôler des données dans la base c'est donc l'objet de la question du 1er message.
3- Question générale : comment sont gérés les CGI dans un environnement client/serveur?
J'espère ne pas avoir été trop confuse.![]()
tu vas sur le site de mysql , et tu cherches dans la partie "documentation" la zone "api c"
1) Oui, mais tu peux faire executer un cgi dans une page html à la façon des "server side includes"Envoyé par licorne
Tu peux aussi executer le cgi de telle sorte que la querystring et les données post soient transférées de la page html au cgi à l'aide de la directive "exec cgi"
Code : Sélectionner tout - Visualiser dans une fenêtre à part <html><body><!--#include virtual="/cgi-bin/cgi.cgi?params" --></body></html>
2) pas compris :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part <html><body><!--#exec cgi="/cgi-bin/cgi.cgi" --></body></html>
3) Comment ça "gérés" ? Bon voila comment ça marche en bref :
Les cgi sont des programmes C comme les autres (ça peut etre n'importe quel executable en fait), ils sont executés par apache après que ce dernier ait positionné quelques variables d'environnement pour transmettre des infos au programme (notamment QUERY_STRING). La sortie standard du programme (stdout) est envoyé au navigateur. L'entrée standard (stdin) sont les données POST.
Bon sinon voila mon point de vue :
Tu y perds à passer en CGI C, à part si tes PHP sont tres lourds et sont composés de beaucoup de modules.
L'avantage de PHP c'est qu'il est chargé une fois pour toute avec le process apache. En CGI C, tu perds les "connexions persitantes" du PHP, en effet, se connecter à chaque requete, ça peut etre lourd. Charger un programme en memoire à chaque requete, c'est pas de la gnognotte non plus pour le systeme.
Tu peux tenter d'ecrire une extension PHP, mais bonne chance parce que c'est tres mal documenté, c'est pas du tout evident au debut. MediaWiki utilise une extension PHP en C pour la gestion du "diff" (difference avec les versions d'un article dans l'historique), le diff etant un algo hyper compliqué.
J'oubliais :
Lorsqu'on quitte la page alors que le cgi est en train d'etre executé, le cgi est planté. Tu peux te retrouver avec plein de connexions MySQL ouvertes (c'est ton probleme de depart)
Finalement j'ai retravaillé mon code PHP et les temps de réponse sont maintenant correctes.Envoyé par Gruik
Toutefois j'ai encore une question par rapport à la remarque de Gruik : quel est l'intérêt de développer des CGI si on peut en perdre la maîtrise ?
Le CGI est une vieille technologie, c'était pour ceux qui ne connaissent qu'un langage particulier (compilé ou de script), d'ailleurs les CGI sont plus souvent utilisés avec du perl. C'est encore pire niveau perf, puisqu'il faut charger l'interpreteur perl à chaque requete, en plus de devoir reanalyser le script.
Si les CGI C sont legers, ça peut qd meme etre interessant; mais dans le cas d'une utilisation avec MySQL, l'analyse ou l'execution d'un PHP simple n'est pas grand chose face à l'interrogation d'une base via TCP/IP (à part en localhost)
Je te remercie pour toutes ces précisions et te souhaite une bonne journée.![]()
Partager