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 :

en même temps 2 actions


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut en même temps 2 actions
    Bonjour,
    j'aimerais savoir comment je peux faire 2 actions en même temps. Est-ce que c'est possible avec PHP POO ?

    En fait, j'ai un script qui récupère les données et il les enregistre dans un fichier TXT et ensuite, il les enregistre dans une table.

    Est-ce qu'il y a une possibilité de les faire en même temps?

    En fait, s'il y a une action qui ne marche pas, il faut que la 2e action soit executé.

    Voici un exemple :
    1re action : enregistrement d'un fichier, mais s’il n'y a plus de place sur le disque dur, il faut passer à la 2e action
    2e action : enregistrement dans une basse de données qui se trouve dans un autre disque dure.

    Est-ce que c'est logique ce que je dis ou j'ai une idée qui n'a pas de sens ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si la deuxième action est conditionné par la première, elles ne sont pas "en meme temps" mais bien l'une à la suite de l'autre.
    Tu peux avoir autant d'"action" à la suite que tu veux.

    Pour la condition c'est simplement un test.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // traitement 1
    $reussite_traitement = TRUE;
     
    if ($reussite_traitement) {
       // traitement 2
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Merci Sabotage,

    Au contraire, le 2e traitement n'est pas conditionné par la 1re, il est indépendant du premier.

    J'aimerais que, s'il y a un pépin pendant le 1er traitement, le script continue et faire le 2e traitement au lieu d'être bloqué sans faire le 2e traitement.

    C'est pour cela que je vais 2 traitements simultanés.
    Est-ce que c'est possible ?

    Merci

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Citation Envoyé par tonton.odilon Voir le message
    Au contraire, le 2e traitement n'est pas conditionné par la 1re, il est indépendant du premier.
    Sabotage a raison, le second traitement est un palliatif à la défaillance du premier donc dépendants l'un de l'autre dans l'exécution mais pas dans le traitement de la tâche.

    Plusieurs questions à résoudre :
    Selon la terminaison du premier traitement : succès ou échec, si échec est-ce que le second traitement reprend l'intégralité des données du premier traitement ou se contente de continuer à partir de l'erreur ?
    Si continuation, quid de l'impossibilité de clôturer la création du fichier texte ?
    Si erreur pendant le second traitement, rollback ou sauvegarde partielle ?
    Bref, c'est pointu

  5. #5
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Merci Rawsrc,

    Hummm je suis un peu perdu...

    Je pense que dans mon cas, il y a un double traitement :
    Il va avoir 2 traitements dans tous les cas :
    1er traitement (avec le statut "succès ou échec") et le 2e traitement (avec le statut succès ou échec).
    La même donnée est sauvegardée en 2 formats différents : dans un fichier et dans une basse de donnée.

    Si les deux sont succès, il n'y a pas de problème, mais s'il y a un échec comme vous dites...

    En fait, je ne connais pas bien donc vous pouvez m'expliquer un peu plus lors de l'échec :

    Par exemple :
    Le script commence et essaie de faire le 1er traitement. S'il n'y arrive pas :
    Est-ce que tout est bloqué, planté et il ne peut donc pas passer au 2e traitement ? N'est-ce pas ?
    Dans ce cas-là que je dois faire pour que le script travaille sur le 2e traitement ?
    2 scripts différents ? Ça sera un peu radotant, n'est-ce pas ?
    Est ce que je peux les faire dans un seul script ?

    Merci

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Tes deux scripts sont redondants dans la mesure où le résultat final est le même, à savoir une persistance des données. Par contre, ils sont complètement différents dans leur implémentation : tu avoueras qu'écrire des données dans un fichier texte est très éloigné de l'écriture des données dans une base de données.

    Pour exécuter la tâche 2 : persistance des données en base, il faut d'abord atteindre l'échec de la première routine. Tu attends un retour la première pour savoir si tu dois ou pas exécuter la seconde routine, comme tu peux le voir ces deux routines ne sont concomitantes mais successives.

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je comprends qu'il y aura les deux enregistrements (en fichier et en BDD) dans tous les cas. L'inquiétude de tonton.odilon est que s'il y a échec durant le premier traitement, ça bloque l'exécution du second.

    Alors on peut faire ainsi :
    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
    19
    20
    21
    22
    23
    24
    25
    try
    {
    	// Enregistrement en fichier
    	$resultat['fichier'] = 'ok';
    }
    catch (Exception $e)
    {
    	// Traitement de l'erreur
    	$resultat['fichier'] = 'Erreur ! '.$e;
    }
     
    try
    {
    	// Enregistrement en BDD
    	$resultat['bdd'] = 'ok';
    }
    catch (PDOException $e)
    {
    	// Traitement de l'erreur
    	$resultat['bdd'] = 'Erreur ! '.$e;
    }
     
    echo 'Résultat des enregistrements :<br />';
    echo '- en fichier : '.$resultat['fichier'].'<br />';
    echo '- en BDD : '.$resultat['bdd'].'<br />';
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je m'excuse de demander pardon.....

    A la rigueur, et si les 2 actions n'ont pas besoin l'une de l'autre, on peut très bien lancer 2 scripts PHP indépendants, via Ajax.
    L'échec de l'une n'entraine pas l'arrêt de l'autre, puisque les actions se passent dans des fichiers PHP "externes" (c'est le principe d'Ajax).

    Les retours seraient :
    • "Succès / Echec de l'enregistrement dans un fichier"
    • "Succès / Echec de l'enregistrement en base de données" (et pas "basse de donnée" !)


    Me trompe-je ?


    [EDIT] Sinon, j'avais aussi pensé à la solution try catch proposée par CinePhil.

  9. #9
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Un grand merci pour vous...
    Philippe (CinéPhil) a mieux décrit mon problème que moi.

    Pardonnez-moi de mal formuler mon problème.

    Si j'ai bien compris, il faut que j'utilise "try & catch" pour que mon script ne soit pas bloqué s'il y a un échec.

    Je suis ravi de vous lire.

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appliquer une action sur plusieurs objets en même temps
    Par Aminerman dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 27/10/2011, 16h00
  2. Ajout d'une action, en même temps, à la toolbar et au menu
    Par bulldo dans le forum Eclipse Platform
    Réponses: 12
    Dernier message: 11/08/2010, 15h21
  3. [RCP] Initialiser une action en même temps que sa vue
    Par sly078 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/05/2010, 09h10
  4. Impossible de lancer deux actions en même temps :/
    Par Cvbdev dans le forum Windows Forms
    Réponses: 11
    Dernier message: 08/05/2007, 14h39
  5. [Réseau][Thread]2 actions en même temps
    Par Belegkarnil dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 18/12/2005, 09h45

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