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

Langage PHP Discussion :

Parallélisation pour Workflow


Sujet :

Langage PHP

  1. #1
    Membre chevronné Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Points : 2 041
    Points
    2 041
    Par défaut Parallélisation pour Workflow
    Bonjour à tous,

    Je poste dans le sous-forum débuter car je pense que ma question est triviale pour qui connait la réponse.

    Je développe pendant mes loisirs un petit moteur de workflow simple qui respecte plus ou moins la norme BPMN et j'ai un problème de parallélisation.

    En gros je simplifie.
    J'ai trois classes A, B et C avec une méthode run();

    Voilà ce que je voudrais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class A{
     
       /**
        * Lance l'étape A
        **/
       public function run(){
         $b = new B();
         //Lance $b sur un tread indépendant
         $b->run();
     
         $c = new C();
         // Lance $c sur un thread indépendant
         $c->run();
     
         ecritDansLog("FIN A");
       }
    }
    En gros, je voudrais que A lance B sans attendre la fin de B, puis lance C sans attendre la fin de C puis continue son exécution.

    Existe t'il un moyen élégant de faire cela ?

    Merci d'avance pour vos réponses

  2. #2
    Membre chevronné Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Points : 2 041
    Points
    2 041
    Par défaut
    Après avoir approfondi mes recherches j'ai trouvé plusieurs pistes.

    2 solutions simples existent pour mon besoin:



    Seulement, je ne suis pas à l'aise car je voudrais pouvoir recevoir un code de retour à minima pour être sûr que la méthode est lancée (ou non).

    Que me conseilleriez vous ?

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    regarde bien la doc des deux fonctions, dans les deux cas tu peux avoir le retour

  4. #4
    Membre chevronné Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Points : 2 041
    Points
    2 041
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    regarde bien la doc des deux fonctions, dans les deux cas tu peux avoir le retour
    Je sais qu'on peut avoir le retour.
    Je me suis peut être mal expliqué.

    Voilà comment je désirerais que cela se passe:
    • A lance B
    • B dit a A qu'il est bien lancé tout en continuant de tourner
    • A, sachant que B s'est bien lancé, continue son bonhomme de chemin et meurt l'esprit tranquille
    • B continue et peut finir avant ou après A.


    Or, sans retour j'ai un mode pur Asynchrone
    • A lance B
    • A continue son bonhomme de chemin et sans savoir si B s'est bien lancé
    • B continue et peut finir avant ou après A.
    • A vit dans l'angoisse: "Comment vas B, est qu'il est bien arrivé ? Il est peut être mort ..."


    Et avec retour j'ai du pur synchrone
    • A lance B
    • A poireaute le temps que B soit fini
    • B finit
    • A finit


    En fait je voudrais une espèce d'"asynchrone avec accusé de réception"

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    tu peux faire ca avec proc_open et ecouter ce qui se passe avec stream_listener, mais en utilisation web c'est limité, le mieux c'est de faire un systeme de queue tasks, mais il faut le serveur qui va avec (un process php suffit)

  6. #6
    Membre chevronné Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Points : 2 041
    Points
    2 041
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    tu peux faire ca avec proc_open et ecouter ce qui se passe avec stream_listener, mais en utilisation web c'est limité, le mieux c'est de faire un systeme de queue tasks, mais il faut le serveur qui va avec (un process php suffit)
    Il est vrai que j'aurai dû préciser du départ.
    Je ne suis pas en Web.
    Je suis en serveur uniquement. Mon script "Père" est lancé via un cron.
    Je vais creuser la piste que tu me donnes.

    Merci beaucoup pour ta réponse.

Discussions similaires

  1. Framwork pour WorkFlow
    Par hugobob dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 01/11/2011, 19h42
  2. eclipse un usage pour workflow
    Par samworkflow dans le forum Eclipse
    Réponses: 1
    Dernier message: 17/11/2008, 15h45
  3. Réponses: 5
    Dernier message: 21/12/2007, 14h58

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