IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

CGI C et base de données MYSQL


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Par défaut CGI C et base de données MYSQL
    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.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par licorne
    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.
    Oui, mais franchement, le PHP est fait pour ça, alors ne t'en prive pas.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Oui, mais franchement, le PHP est fait pour ça, alors ne t'en prive pas.
    C'est vrai et comment faire compliqué quand on peut faire simple...
    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.

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    tu vas sur le site de mysql , et tu cherches dans la partie "documentation" la zone "api c"

  5. #5
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Citation Envoyé par licorne
    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.
    1) Oui, mais tu peux faire executer un cgi dans une page html à la façon des "server side includes"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html><body><!--#include virtual="/cgi-bin/cgi.cgi?params" --></body></html>
    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><!--#exec cgi="/cgi-bin/cgi.cgi" --></body></html>
    2) pas compris :/

    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é.

  6. #6
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    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)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Par défaut
    Citation Envoyé par Gruik
    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.

    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 ?

  8. #8
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    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)

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Par défaut
    Je te remercie pour toutes ces précisions et te souhaite une bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. connexion a une base de donné mysql
    Par ithery75 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/02/2005, 20h57
  2. [JDBC]acces à une base de données mysql
    Par sehaba dans le forum JDBC
    Réponses: 13
    Dernier message: 07/12/2004, 00h39
  3. probleme construction base de donnes MySql...Help
    Par chakan dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/07/2004, 11h27
  4. connection à base de donnée MYSQL
    Par zouzou_zaza dans le forum Bases de données
    Réponses: 11
    Dernier message: 04/07/2004, 12h31
  5. XML->Base de donnée Mysql
    Par lheureuxaurelie dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 10/03/2004, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo