Liste d'attente en php ! Comment faire?

Résolu
nonodu003 Messages postés 61 Statut Membre -  
jeremy.s Messages postés 1248 Statut Membre -
Bonjour,

Je suis en stage et on me demande de créer une interface web pour exécuter un de leur programme. Cette interface se compose d'un formulaire et d'une page qui récupère les infos du formulaire qui sont passés en argument lors de l'exécution du programme. Enfin bon, je l'ai créer et j'ai réussi à exécuter le programme, à récupérer les fichiers résultats et de les rendre téléchargable.

Mais le problème c'est qu'une personne à la fois peut exécuter leur programme car à la fin on efface les données. Du coup, si plus d'une personne l'utiliser, ils peuvent prendre les données des autres ou les supprimer voir les deux.

Du coup, mon maitre de stage m'a demandé de faire une liste d'attente pour exécuter leur programme. Mais je n'ai pas la moindre idée de comment faire en php (même dans un autre language d'ailleurs ^^). Je ne sais même pas vers quoi je pourrais me diriger pour m'aider.

Quelqu'un peut m'aider et me conseiller s'il vous plait ! J'ai vraiment aucune idée.

Merci d'avance ! =)

13 réponses

  1. jeremy.s Messages postés 1248 Statut Membre 79
     
    Salut !

    As tu accès au statut du programme ? (récupérer si le programme est en cours d'execution ou non)
    Ou si tu sais cb de temps il met pour s'executer ?
    0
  2. nonodu003 Messages postés 61 Statut Membre 1
     
    Je peut pas savoir combien de temps il met. Sa dépend de ce que le visiteur choisit comme option dans mon formulaire et du nombre de fichier qui souhaite que le programme traite.

    Je sais pas s'il y a un moyen de savoir pour l'exécution du programme. Mais j'ai un affichage de ce genre sur ma page qui traite les infos du formulaire et qui exécute le programme:
    "Tous les éléments du formulaire sont valide. Lancement du programme!"
    "[...] //texte qui se génère automatique par le programme qui montre son avancé"
    "Exécution du programme terminé !".

    Sa peut aider ou pas?
    0
  3. jeremy.s Messages postés 1248 Statut Membre 79
     
    Oui sa peut !
    Mais, est-ce que tu as accès à ce programme ?
    0
  4. nonodu003 Messages postés 61 Statut Membre 1
     
    oui je peux y accéder il est dans un dossier sur l'ordinateur que j'utilise.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nonodu003 Messages postés 61 Statut Membre 1
     
    pour être plus précis, il se situe dans le même dossier que mes deux pages php
    0
  7. jeremy.s Messages postés 1248 Statut Membre 79
     
    Ok donc tu peux ouvrir le fichier, cool ! C'est du php ?

    0
  8. nonodu003 Messages postés 61 Statut Membre 1
     
    Oui je peux l'ouvrir.
    Mes 2 pages sont en php (formulaire + traitementInfo/ExecutionProgramme)
    Mais le script du programme est en shell. Dans ce script, on lance automatique un autre programme qui est écrit en R.
    0
  9. jeremy.s Messages postés 1248 Statut Membre 79
     
    Ok ok.

    Bah ce que je te propose, c'est un peu compliqué, je pense qu'il y a plus simple, mais jpense que ca peut marché :
    C'est que juste avant de lancer ton programme (Donc je sais pas comment tu le lances depuis tes fichiers PHP après la validation du formulaire), tu vas faire un update sur un table en BDD
    Une table du genre :
    programme(estExecute(number)) avec 0 pour non et 1 pour oui
    Donc quand tu récupères ton formulaire en post, tu vas faire tes traitements, et avant de lancer ton programme, tu vas regardé ce champ.
    "Select estExecute from programme"
    Si c'est 0, tu fais un "update programme set estExecute=1" et tu lances le programme.
    Si c'est 1, tu attends et tu reessaye après.

    Par contre, pour remetre le champ à la fin du programme à 0, je sais pas trop ... peut être voir avec le "Exécution du programme terminé !" et le détecté avec jQuery et ensuite envoyé en AJAX comme quoi c'est fini et faire un update.

    Ca peut être cool d'avoir un autre avis enfaite !
    0
  10. nonodu003 Messages postés 61 Statut Membre 1
     
    ok je vois un peu près ce que sa doit faire.

    Merci je vais essayer et je vous tiens au courant
    0
    1. nonodu003 Messages postés 61 Statut Membre 1
       
      Au faite, j'utilise la fonction system() de php pour exécuter le programme.
      0
    2. jeremy.s Messages postés 1248 Statut Membre 79
       
      Bah donc avant ca tu fais un update :)
      0
  11. nonodu003 Messages postés 61 Statut Membre 1
     
    Bien sur, s'il y a d'autre idée je suis preneuse ! =)
    0
  12. jeremy.s Messages postés 1248 Statut Membre 79
     
    Ouais moi aussi j'aimerais bien avoir d'autre avis :p
    0
  13. nonodu003 Messages postés 61 Statut Membre 1
     
    C'est bon, j'ai réussit à faire une liste d'attente.

    Grâce à ton aide, j'ai eu l'idée de faire un peu comme tu l'as dit avec 0 et 1 sauf que je les ai écrit dans un fichier et non dans une BDD.
    J'ouvre le fichier, je regarde la première ligne si c'est 0 ou 1. Si c'est 0, j'exécute ma page sans oublié d'écrire 1 sur la première ligne. A la fin, j'écrit 0 sur la première ligne. Si c'est 1, j'attend.

    Voilà ! Encore merci pour ton aide =)
    0
  14. jeremy.s Messages postés 1248 Statut Membre 79
     
    Oui dans un fichier ca revient au même :)

    Derien :)
    0