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

Langage PHP Discussion :

Pertinence d'une application basée sur exec()


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 188
    Points
    188
    Par défaut Pertinence d'une application basée sur exec()
    Bonjour,

    J'ai découvert il y a quelques temps l'existence de la famille de fonctions de type "exec()". Cela m'a conduit à me poser des questions sur la pertinence d'applications "lourdes" dont la partie métier serait développée par exemple en C++ ; et où PHP ne servirait presque que d'interface entre le serveur et les fichiers exécutables ainsi générés.
    Plus précisément, s'il ne s'agit que de récupérer quelques valeurs dans une base de données et de les afficher, cette approche n'a pas d'intérêt. Mais qu'en est-il des applications demandant plus de traitements ; comme des wikis ou des jeux par navigateurs par exemples ?

    Une première analyse m'a permis de dégager pour cette approche les avantages et les inconvénients suivants :

    Avantages
    • Temps de traitement moindre qu'en PHP pur (utilisation de fichiers binaires)
    • L'utilisation d'un langage typé et qui nécessite la déclaration des variables manipulées est plus adapté au développement de gros projets


    Inconvénients
    • D'avantage d'entrées/sorties à gérer
    • Moindre portabilité (risque de devoir recompiler son c++ en changeant de serveurs ; nécessité d'avoir un hébergeur ne bridant pas l'utilisation de exec)


    Qu'en pensez vous ? À quelles autres considérations allant dans le sens ou à l'encontre de cette approche pensez vous ? Connaissez vous des applications ayant été conçu, au moins dans une certaine mesure, en utilisant ce concept ?

  2. #2
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Il y a une autre possibilité:
    Ecrire une extension php qui sera "chargée" à la compilation (linkage statique) ou à l'éxécution (shared lib).

    Passer par une extension est même la méthode conseillée si tant est que l'on ait les sources de la librairie en C ou C++ considérée. Si on n'a pas les sources ou qu'on n'est pas en mesure d'avoir une interface en C/C++, alors effectivement, passer par exec est la seule solution.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    L'utilisation de exec n'est pas seulement lié au délai de traitement.
    Tu ne pourras pas l'utiliser avec des applications qui ont besoin de réactivité.
    PHP ayant aucun control sur ces applications externes, tu vas avoir du mal a les "suivre".
    Il vaut mieux délégué a exec des traitements dont le temps d'execution n'est pas vital.

    Avantages
    * Temps de traitement moindre qu'en PHP pur (utilisation de fichiers binaires)
    * L'utilisation d'un langage typé et qui nécessite la déclaration des variables manipulées est plus adapté au développement de gros projets
    Il ne faut pas que tu te dises je veux raccourcir le temps de traitement je passe par du C ou C++. Il faut que tu résonnes sur toute la chaine. En gros ca dépendra du projet et des méthodes que tu veux déléguer.

    Long débat que sont les variables typés, ca dépend encore du projet.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 188
    Points
    188
    Par défaut
    Merci pour ces réponses.

    PHP ayant aucun control sur ces applications externes, tu vas avoir du mal a les "suivre".
    Il faut que tu résonnes sur toute la chaine
    Je ne suis pas sûr de bien comprendre : en quoi le fait que php n'ayant aucun contrôle sur ces applications pourrait être dommageable ? Quel genre de "raisonnement sur toute la chaîne" faudrait-il mener ?

    Par ailleurs, je ne connaissais pas la notion d'extension php. J'ai pu trouver et lire un document sur le sujet, et j'avoue ne pas être certain de voir ce qu'une telle extension a comme avantage par rapport à un exec sur un exécutable "classique". En particulier, de ce que j'ai pu lire, cette approche a l'air plus complexe (création d'un fichier de config .m4 ; ...) que de simplement pondre un code C++ et le compiler classiquement. Ai-je lu trop vite et loupé un élément ?

  5. #5
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    L'avantage d'une extension c'est qu'on est au plus proche du code en C/C++ ciblé mais également de php, que ce soit pour son api interne en C ou encore l'interface avec l'utilisateur au travers d'un script en php.
    Une grande partie des fonctions et classes dispo dans php le sont par l'intermédaire d'extensions (sous windows se sont les fichiers php_blah.dll et sous linux les blah.so). C'est quand même mieux que de passer systématiquement par exec!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Je ne suis pas sûr de bien comprendre : en quoi le fait que php n'ayant aucun contrôle sur ces applications pourrait être dommageable ?
    Pour faire simple, si tu executes un fichier externe via la commande exec qui te garanti qu'elle ne va pas planter ou qu'elle ne va pas mettre 10 fois plus de temps que prévu pour exécuter la tache. PHP ayant aucuns controles sur ces taches tu risques de de trouver coincé.

    Quel genre de "raisonnement sur toute la chaîne" faudrait-il mener ?
    Il faut mener une reflexion sur la totalité de la chaine, base de données, serveur web, navigateur...puis voir l'interet et les risques a inclure des traitements externes. Personnellement je les utilise que pour des taches offline.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 188
    Points
    188
    Par défaut
    Ok.
    Je vous remercie pour ces réponse.

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

Discussions similaires

  1. [ZF 1.8] Créer une application basée sur ZF avec Zend_Tool
    Par aityahia dans le forum Autres composants
    Réponses: 7
    Dernier message: 22/09/2009, 15h57
  2. Installation une application basée sur gtk
    Par KiKiTiTi dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 11/09/2008, 12h47
  3. Réponses: 2
    Dernier message: 04/07/2007, 17h06
  4. Réponses: 5
    Dernier message: 10/05/2007, 19h04

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