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 :

Comment appeler un programme PHP � partir de C++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par d�faut Comment appeler un programme PHP � partir de C++
    Bonjour,

    Je voudrais appeler un programme PHP � partir d'un programme C++. Je souhaiterais pouvoir passer des param�tres et r�cup�rer dans le programme C++ la chaine de caract�res renvoy�e par le programme PHP.
    Savez-vous s'il est possible de faire cela, et comment ?

    Merci

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Je pense que seul un serveur WWW peut invoquer une page PHP.
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par d�faut
    Il s'agit effectivement d'appeler un programme PHP qui se trouve sur un serveur.
    Cela reviendrait � ouvrir une url � partir de C++, et r�cup�rer la chaine renvoy�e par le PHP ?

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Il faut savoir que, le plus souvent, les scripts PHP ont pour but de cr�er des pages Web, le plus souvant des pages HTML, mais peut �tre aussi des document XML et/ou faire passer la r�ponse pour certains formats particuliers (archives, images, sons, audio-visuels, texte,...)

    Si tu appelles une url pointant sur un script PHP, tu dois donc t'attendre � r�cup�rer... une page HTML en retour

    Mais bon, le protocole utilis� pour discuter avec des scripts PHP est clairement identifi� (le protocole HTTP), le(s) port(s) sur lesquels demander les URI itou (80, �ventuellement 8080 si au travers d'un proxy et 443), et on peut clairement identifier ce que l'on re�oit.

    D�s lors, il "suffit" de cr�er un ... client HTTP, en utilisant, par exemple, la biblioth�que boost.asio, ou curl++ ou toute autre biblioth�que fournissant le support de sockets et/ou du protocole HTTP

    Pour le reste, il faut voir ce que le script est sens� te renvoyer, afin de pouvoir t'indiquer comment g�rer la r�ponse
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    Invit�
    Invit�(e)
    Par d�faut
    Pour invoquer un script php en mode Standalone (sans serveur web) Il faut utiliser l'ex�cutable Standalone de php (en php4 on peut invoquer le php.exe de la racine de PHP avec le param�tre -p en php5 je crois que le nouveau est php-cli.exe mais cela reste � confirmer)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    /php/php.exe -f nom_page.php
    J'utilise ce code dans un .bat qui me fournit donc un retour sur la console

    tu peux � la limite rediriger la sortie vers un fichier texte

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    /php/php.exe -f nom_page.php > fichier.txt
    et utiliser � ce moment c++ pour lire le fichier r�sultat.

    mais cette m�thode que je te donne passe par l'utilisation interm�diaire des fichiers .bat et je suppose que tu veux contr�ler directement php. Il faut voir si l'invocation par exec ou les threads peut �tre rediriger sur un flux.

    Pour r�sumer trois pistes :
    - Passage interm�diaire par un .bat avec redirection de la sortie sur un .txt.
    - exec() ou _exec().
    - Threads.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par d�faut
    Merci pour vos r�ponses.

    La solution d'ex�cuter directement le script php situ� sur un serveur web, en cr�ant un client http, correspondrait effectivement plus � ce que je cherche � r�aliser.

    Pour r�pondre � koala01, le script est cens� retourner une chaine de caract�res.
    Pourrais-tu m'indiquer alors comment g�rer la r�ponse ?
    J'ai trouv� de la documentation sur boost.asio mais rien sur curl++.

  7. #7
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    La gestion est, sommes toutes, identique � toute communication client/serveur:
    1. r�solution de l'adresse
    2. ouverture du port
    3. connexion au serveur
    4. envoi de la requ�te (pe: dossier/tonscript.php?var1=val1&var2=val2 )
    5. r�ception de la r�ponse dans un "buffer"
    6. analyse syntaxique de la r�ponse ( == s'assurer que "l'orthographe" correspond � ce que l'on attend)
    7. analyse lexicale de la r�ponse ( == tri des donn�es re�ues de mani�re � en obtenir des objets qui ont un sens)
    8. fermeture du port
    9. utilisation des objets cr��s sur base de la r�ponse.
    Le tout, en utilisant le protocole et le port "qui vont bien" pour le type de r�ponse que l'on attend de la part du script.

    Comme php peut ne renvoyer qu'une chaine de caract�res mais qu'il est g�n�ralement ex�cut� sur un serveur:
    1. � l'�coute du port 80
    2. utilisant le protocole HTTP
    "YAPUKA" utiliser... ce port et ce protocole

    De mani�re g�n�rale, tout ce qui passe par le r�seau se fait par l'utilisation de sockets ouverts sur des ports particuliers.

    En cela, boost fournit une premi�re partie de la r�ponse �tant donn� qu'il s'agit d'une biblioth�que sp�cialis�e et portable de gestion des sockets

    En ce qui concerne curlpp (d�sol�, c'est pp et non ++ ), il s'agit d'un wrapper de la biblioth�que Curl en C++.

    Tu trouvera les source de cette biblioth�que sur source forge

    Pour le reste, quelques d�tails suppl�mentaires nous permettraient surement de te fournir plus de pr�cisions
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par d�faut
    Merci pour cette description.
    Cependant je rencontre les probl�mes suivants :

    - pour Curlpp : Je n'ai pas trouv� les sources pour windows !
    - pour boost : je n'arrive pas � compiler les modules avec bjam.exe
    Lorsque j'essaie de compiler le module system, une fen�tre s'ouvre et me demande de s�lectionner une application pour ouvrir le fichier error_code.obj.rsp
    La ligne de commande que je tape sous dos est : bjam --with-system --toolset=intel stage
    Il me semble pourtant avoir correctement suivi la doc "Getting Started on Windows".
    Merci pour votre aide.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par d�faut
    Ok, �a marche ! J'ai r�ussi � faire fonctionner boost::asio.
    Merci.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 24/02/2012, 16h01
  2. R�ponses: 2
    Dernier message: 23/10/2009, 21h32
  3. Comment appel� un programme AS400 a partir de VB6
    Par Aminos dans le forum VB 6 et ant�rieur
    R�ponses: 6
    Dernier message: 15/08/2006, 13h12
  4. [MySQL] Comment appeler du code PHP par requ�te
    Par mickdu90 dans le forum PHP & Base de donn�es
    R�ponses: 14
    Dernier message: 19/04/2006, 10h55
  5. R�ponses: 2
    Dernier message: 16/10/2005, 14h07

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