Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire des calculs sur python sur un serveur PHP

Je souhaite faire des calculs python sur un serveur Web

    15 février 2021 à 19:04:44

    Bonjour à tous, j'ai réalisé sur python un algorithme permettant de remplir un calendrier et qui utilise un algo génétique, je vous passe les détails. Je l'ai fait sur python car cela me semblait etre la manière la plus logique de faire étant donné le nombre de librairies d'algo génétique sur python. 

    L'objectif à terme était de mettre cet algorithme sur un site Web géré en PHP / MySQL. Pour décrire rapidement, j'avais pour idée de :

    - gérer les input de mon algo gen en PHP (ie l'utilisateur rentre les paramètres sur le site Web)

    - transférer sur python ces input et run le script python

    - recevoir le résultat de mon algo python dans une variable PHP et l'afficher ensuite sur le site Web.

    Je ne sais pas si c'est la bonne manière de faire, je ne sais pas non plus si c'est possible d'utiliser un interpreteur python sur les sites lorsqu'ils sont hébergés? Meme si je suis assez à l'aise avec python, je débute en dev Web, d'où toutes mes questions. Est-ce que c'est la bonne manière de faire? Ou est-ce que le mieux est de ré implémenter mon algo Python sur PHP et faire les calculs directement sur PHP? En sachant d'autre part que quand je fais tourner l'algo sur mon ordinateur, le temps de calcul est de 2 minutes, est-ce que le fait de run un script python sur un site web ne risque pas de rallonger considérablement les temps de calcul? 

    Merci!

    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2021 à 22:08:35

      Bonjour,

      Le mieux serait de faire le site web en Python pour éviter l'utilisation de multiples langages sur un même projet et pour faciliter l'appel de votre script en Python.

      Si vous souhaitez tout de même faire le site en php, vous pouvez exécuter des scripts Python avec les fonctions exec ou shell_exec de PHP.

      Utiliser exec en PHP ne ralentira pas les performances de votre script mais il faut bien sûr rajouter le temps d'appel à votre script Python et le retour des résultats.

      • Partager sur Facebook
      • Partager sur Twitter
      "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
        15 février 2021 à 22:56:44

        Merci beaucoup de votre réponse! Je dois malheureusement rester sur PHP car nous avons commencé le site ainsi et que ce sera surement plus adapté pour toutes les autres fonctionnalités du site. 

        Une question reste cependant en suspens : si jamais j'utilise la fonction exec, êtes-vous d'accord pour dire qu'il faut que le serveur ait également la capacité d'executer le code en python? Est-ce tout le temps le cas sur des hébergeurs classiques? Est-ce une option en plus à choisir lors du choix de l'option d'hebergement?

        Ce que je ne comprends pas c'est que nous commençons un petit peu à regarder tous les hébergeurs disponibles sur le marché, mais rien ne précise à chaque fois le language dans lequel doit etre codé le site...

        Merci !

        • Partager sur Facebook
        • Partager sur Twitter
          15 février 2021 à 23:16:38

          Les serveurs hébergeant du code php sont les plus courants en effet.

          Si tu veux un serveur permettant l'hébergement de scripts PHP et Python je te conseille de te tourner vers l'offre multipack d'Heroku:

          https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app

          Dans le pire des cas, tu peux prendre un serveur hébergeant php et un serveur hébergeant du Python.

          Ne connaissant pas les tenants et les aboutissants de ton projet je ne peux pas t'en dire plus.

          -
          Edité par eclairia 15 février 2021 à 23:18:39

          • Partager sur Facebook
          • Partager sur Twitter
          "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
            16 février 2021 à 0:19:21

            Merci encore de ta réponse, je vais regarder tout ça de plus près pour les hébergeurs. 

            Pour la mise en pratique en local maintenant, ça ne marche pas :'( . Je vous montre ce que j'ai fait, j'ai repris du code trouvé sur stack: 

            Coté PHP :

            <html lang="fr">
              <?php  include("../include/head.php"); ?>
              <body>
            
                <?php
                $command = escapeshellcmd('/src/python/test.py');
                $output = shell_exec($command);
                echo $output;
                ?>
                
            
              </body>
            </html>
            
            <?php  include("../include/foot.php"); ?>

            Coté Python : 

            #!/usr/bin/env python
            
            return("ok")
            

            Et là, c'est la page blanche... Des idées?

            Merci!

            • Partager sur Facebook
            • Partager sur Twitter
              16 février 2021 à 21:32:19

              Plusieurs choses à vérifier lorsqu'un code ne fonctionne pas.

              • Que donne un var_dump de $output
              • Le path vers ton script python est-il bon?
              • Ton fichier est-il exécutable? (chmod +x path_to_file)
              • Ton script Python est il fonctionnel indépendamment de la commande exec

              Je ne connais pas Python mais en faisant un test avec le code Python que tu nous a fourni j'ai une erreur.

              Par contre un code comme celui ci-dessous fonctionne bien:

              #!/usr/bin/env python3
              
              print('Hello world');
              <?php
              
              $output = shell_exec('./test.py');
              
              var_dump($output);

              -
              Edité par eclairia 16 février 2021 à 21:33:39

              • Partager sur Facebook
              • Partager sur Twitter
              "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain

              Faire des calculs sur python sur un serveur PHP

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown