Script externe lancé avec commande exec()

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Script externe lancé avec commande exec()

    Bonjour

    Dans le cadre d'un développement informatique, j'ai un php (nommé script_A.php) qui s'exécute.
    script_A.php faisant des traitement complexes et relativement longs, je voudrais redonner la main à l'utilisateur et exécuter la partie complexe du script en arrière plan.
    Le script exécuté, l'utilisateur sera informé de la fin des traitements.

    Le script A (version light) appelle donc un autre script (script_B.php) via la commande :

    exec("php chemin/vers/mon/site/script_B.php > /dev/null &");

    Le script B.php a cette forme :

    <?php
    define('_JEXEC', 1);
    define('DS', DIRECTORY_SEPARATOR);
    define('JPATH_BASE', dirname(__FILE__));
    require_once JPATH_BASE.'/includes/defines.php';
    require_once JPATH_BASE.'/includes/framework.php';
    $app = JFactory::getApplication('site');
    $app->initialise();
    ....
    traitement complexe
    ....

    ?>

    Ce script plante s'il est lancé via un exec() alors qu'il fonctionne via http://monsite.com/script_B.php

    Quelqu'un aurait-il déjà effectué ce type d'opérations, à savoir appel de l'environnement Joomla dans un script externe lancé par une commande exec() ?

    Merci d'avance.

  • #2
    Re : Script externe lancé avec commande exec()

    Bonjour

    Je pense que ton script a zéro chance de fonctionner car l'instruction exec() est bannie (et à bannir!!!!) sur des serveurs web. C'est un minimum syndical au niveau de la sécurité la plus minimale possible.

    Je te propose plutôt de te pencher sur de l'Ajax : tu affiches un page qui contient un code Ajax qui appelle ton script B. Et là, en Ajax, tu exploites success() qui permet, une fois que la requête B est achevée, d'afficher un "Le script s'est achevé; merci pour votre patience".

    Donc : une page A qui affiche un "Veuillez attendre"; un script Ajax dans cette page qui appelle le script B et un success() pour gérer le retour.

    Bonne programmation.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Re : Script externe lancé avec commande exec()

      Bonjour,
      Merci pour ta réponse.
      Deux questions :
      1 - Pourquoi exec() est à bannir ? J'ai essayé un exec() simple chez OVH, ça marche bien ...
      2 - Aurais-tu un exemple simple de script A qui appelle un script B (faisant un wait de quelques secondes par exemple) en Ajax, avec test code retour ?
      Mon site est en Joomla 2.5
      Merci

      Commentaire


      • #4
        Re : Script externe lancé avec commande exec()

        1. exec('rm -f'); et hop j'ai supprimé tout les fichiers de ton site.

        2. http://api.jquery.com/jquery.ajax/

        Code PHP:
        $.ajax"script_b.php" )
          .
        done(function() {
            
        alert"success" );
          })
          .
        fail(function() {
            
        alert"error" );
          })
          .
        always(function() {
            
        alert"complete" );
          }); 
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X