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

Serveurs (Apache, IIS,...) Discussion :

Controle d'un logiciel depuis le web


Sujet :

Serveurs (Apache, IIS,...)

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Par défaut Controle d'un logiciel depuis le web
    Bonjour,

    Je programme un logiciel de simulations démographiques en Pascal (je sais Pascal, ça fait ringuard, mais en algorithmique et pour l'enseignement, c'est plutot pas mal).

    Je cherche à contrôler et suivre les simulations à partir d'une interface web et comme je ne suis pas un pro de la programmation web, je ne sais pas par où commencer.

    Idéalement, je souhaite entrer des paramètres dans une form d'une page, cliquer sur un bouton, et lancer la simulation. Si je me suis bien documenté, on fait ça assez facilement avec CGI, et c'est compatible Pascal.

    Mais, comme les simulations durent plusieurs heures ou jours, j'aimerais suivre progressivement les résultats intermédiaires et pas attendre que tout soit fini pour que la page s'affiche.

    Comment faire ça? Coupler CGI et AJAX ? Ou SSI, mais il paraît que Ruby permet de faire cela aussi? Mais alors peut-on garder le programme de simulation en Pascal? Bon je suis perdu, et j'aurais besoin de l'aide de connaisseurs !

    Merci beaucoup

    Guillaume

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    A priori, toutes les technos Web te permettront de faire ce que tu recherches. Le truc, c'est que qq soit la techno, aucune n'est adaptée au lancement ou à l'exécution de tâches longues. En gros, l'idée dans ce genre de cas c'est d'avoir 2 systèmes : un système non Web d'exécution des processus Pascal à longue durée (à base d'un script lancé par cron par exemple) et un système de gestion orienté Web qui te permet de programmer des exécutions Pascal et de suivre leur évolution. Après, l'implémentation d'un tel mécanisme, c'est toi qui vois : pour des raisons de propreté, on utilisera préférentiellement une base de données pour stocker toutes les exécutions (avec leur état et éventuellement des traces, etc.). Dans ce cas :
    - Tu te connectes sur le Web à une interface d'admin qui te permet de consulter, modifier ou ajouter des entrées dans cette base de données
    - Tu as un processus qui lit régulièrement la base de données et exécute les demandes.

    Pour mettre à jour l'état d'une exécution Pascal, soit c'est ton moteur qui est capable de déterminer l'état et de mettre à jour la base (ce que j'aurais tendance à recommander), soit c'est ton programme Pascal qui met à jour la base.

    Sinon, j'aurais plutôt posté la question dans la partie Général Conception Web du forum.

    Bon courage

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Par défaut
    Merci pour ta réponse. En fait, j'ai fait un CGI qui me lance mon appli pascal avec les paramètres que je veux, et ensuite j'ai javascript qui me charge les résultats toutes les 3 secondes. Ca correspond en gros à ce que je voulais faire. Même si c'est pas de la haute technologie !

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    La question à se poser c'est de savoir ce qu'il se passe si tu fermes la navigateur : est-ce que ton programme Pascal est interrompu brutalement ou est-ce que le calcul continue ? Et s'il continue, comment récupérer le résultat ?

    J'ai fait un truc en PHP un peu équivalent à ce que tu as fait mais qui ne marche pas sur tous les serveurs (c'est OK avec EasyPHP et mon serveur Apache Linux mais pas chez mon hébergeur ) :
    - J'ai un programme (en PHP également) qui génère des traces dans un fichier (pour consultation off-line des résultats) et sur la sortie standard
    - J'appelle ce programme depuis une page PHP avec la fonction popen. Je récupère alors un "handler" sur la sortie standard de la commande.
    - Ma page PHP boucle sur ce handler et affiche ce qu'elle y récupère au fur et à mesure.
    - Je compte un timeout : si des étapes du programme sont un peu longue, je prolonge un peu le timeout du thread serveur exécutant ma page PHP (fonction set_time_limit). C'est ça qui ne passe par sur tous les serveurs.

    J'ai rien inventé, j'ai repris du code présent sur le site php.net

    Tout ça a l'air super tu me diras mais dans mon cas, si la connexion coupe entre mon navigateur et mon serveur, le programme est stoppé net. C'est pour ça qu'un système avec cron ou autre est intéressant : tu n'as pas à t'occuper de ce pb de timeout ou de coupure de connexion, ça peut travailler toute la nuit s'il faut, ça marchera.

Discussions similaires

  1. [Win32] Retourner un dataset depuis un Web Service
    Par romstarr dans le forum Web & réseau
    Réponses: 2
    Dernier message: 10/05/2008, 17h47
  2. Réponses: 2
    Dernier message: 12/07/2006, 08h44
  3. Logiciel de filtre web. Comment les éviter
    Par babemagus dans le forum Applications
    Réponses: 3
    Dernier message: 03/03/2006, 17h38
  4. Réponses: 1
    Dernier message: 01/03/2006, 11h27
  5. [techno] ajouter ce controle (cf photo) a une page web
    Par junty dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 17/10/2005, 16h43

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