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

Linux Discussion :

Serveur avec applications


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Serveur avec applications
    Bonjour à tous,

    j'aimerai concevoir une plateforme internet permettant de lancer des programmes installés sur mon serveur linux.
    Les utilisateurs voulant lancé un programme sur le serveur doivent au préalable s'être identifié. J'aimerai qu'une fois le programme fini, l'utilisateur puisse reçevoir les résultats du programme par mail.

    Pour la gestion des pages dynamiques, j'ai opté pour php.
    Concernant la mise en place de la plateforme, je vois deux façon de faire :

    1. Php se charge de lancer directement le programme choisi par l'utilisateur. On peut alors imaginer tenir à jour, dans une base de données, une table contenant le programme lancé (son pid) + son utilisateur

      Ensuite avec une tache cron, on vérifie toutes les x minutes l'état des programmes et on peut ainsi voir quel programme a fini d'être exécuté.


    1. Une deuxième façon de voir la plateforme serait d'avoir le script php qui se charge d'exécuter les programmes et sur le serveur j'aurai un programme démon en C par exemple qui tournerait et qui se chargerai de vérifier l'état des programmes, de retourner les résultats quand un programme a fini (en lançant un script par exemple), etc...


    J'espère que j'ai été assez clair et précis. Sinon n'hésitez pas à me dire les points pour lesquels je dois clarifier.

    Je me demandais donc quels avantages offraient une méthode plutôt qu'une autre. Il est clair qu'avec le démon en C, les résultat seront envoyé directement "en live", contrairement à cron qui se fera par "tranche horaire".
    Mais si le démon "plante", plus rien ne marchera alors qu'avec cron on aura pas se problème...

    J'aimerai aussi savoir si la communication "PHP - C" est réalisable? Est-il possible par exemple que PHP dise au démon C : "j'ai lancé le processus n°1345 maintenant c'est à toi de t'en occuper" ?

    Merci d'avance pour vos suggestions, conseils

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    salut,

    deux petites remarques:

    Ensuite avec une tache cron, on vérifie toutes les x minutes l'état des programmes et on peut ainsi voir quel programme a fini d'être exécuté.
    Un désavantage de cette permière solution est que ça implique au final une forme d'attente active (ie. toutes les x minutes je vais voir ce qui s'est passé).

    En règle générale on privilégie les attentes passives (ie. être notifié quand quelque chose s'est passé) car elles sont:

    - plus 'réactives' : on est prévenu dès qu'on doit l'être, pas au prochain 'check'

    - moins consommatrices en ressources : tant qu'il n'y a rien de nouveau, on ne fait rien.

    Ceci étant dit, vu tes faibles besoins en 'réactivité' et vue la faible consommation d'une tâche cron lancée toutes les x minutes, ça ne devrait pas non plus avoir un gros impact sur la viabilité de la solution.

    J'aimerai aussi savoir si la communication "PHP - C" est réalisable?
    Une façon de faire est d'utiliser les mécanismes de socket: le démon 'C' ouvre une socket TCP d'écoute sur un port local et l'application PHP va se connecter à cette socket pour lui envoyer un message quand elle en a besoin (typiquement "j'ai lancé le processus n°1345 maintenant c'est à toi de t'en occuper").

    C'est une technique couramment utilisée, notamment dans le monde linux (par exemple une communication PHP/BdD ou encore le fonctionnement du serveur X11).

    Après, je ne sais pas s'il existe d'autres méthodes plus 'efficientes'.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 42
    Points
    42
    Par défaut
    Bonjour et avant tout merci pour tes réponses, elles m'aident fortement.

    Je comprend maintenant le principe pour la communication php-C.

    En cherchant j'ai trouvé que l'on pouvait également lancer un processus avec C grâce à la fonction exec().
    Il serait peut être alors plus simple de tout gérer par le C, à savoir le lancement du programme et l'attente de sa terminaison. Une fois le programme finie, C n'aura alors plus qu'à lancer le script permettant l'envoie d'email.

    Php se chargerai alors de simplement dire à C quel programme il doit lancé...

    Concernant la comparaison entre mes deux solutions à savoir :
    - utilisation de cron
    - couplage php-C

    il est vrai que, comme tu le dis, la 2ème solution sera plus réactive ce qui peut être un plus. Le fait aussi de lancer les programmes grâce au C me permettrait peut-être l'utilisation de thread...

    De plus, la 2ème solution me permettrai facilement de vérifier en C l'utilisation du processeur du serveur pour autoriser ou non une nouvelle requête client.

    Maintenant concernant le risque de "plantage", est-il possible qu'un démon se stoppe pour une raison ou autre et rendent ainsi ma plateforme inutilisable?

    A ce moment là peut-être utiliser cron en parallèle pour vérifier l'état du démon?

    Y a-t-il d'autres types de risques à prendre en considération dans ce genre de projet?

    Encore une fois merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 42
    Points
    42
    Par défaut
    Bonjour à tous,

    j'aurai une petite question concernant le lancement d'un programme sur ma plateforme...

    A choisir il vaut mieux
    - lancer l'exécution du programme avec php et dire ensuite au démon C de prendre le relais
    - ou alors choisir que php dise au démon C d'exécuter le programme?

    Je suis bien tenté par laissé le démon C tout faire mais point de vue performance, quel solution est meilleur?

    Peut-on, dans la deuxième solution, associé un utilisateur à un pid?
    Parce que dans la première solution, en lançant le programme avec php on peut alors récupérer le pid et associté l'utilisateur à ce pid mais si c'est le démon qui lance le programme, il n'y a pas moyen d'associer l'utilisateur au pid

    Merci pour vos réponses

Discussions similaires

  1. application client-serveur avec les sockets
    Par matheo600 dans le forum C++
    Réponses: 1
    Dernier message: 20/04/2008, 17h21
  2. Application Client Serveur avec DB Oracle
    Par ouranos21 dans le forum JDBC
    Réponses: 16
    Dernier message: 10/01/2008, 09h42
  3. application client/serveur avec les sockets
    Par baya1 dans le forum JBuilder
    Réponses: 1
    Dernier message: 24/02/2007, 15h37
  4. Réponses: 1
    Dernier message: 01/02/2006, 17h48

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