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 :

Exécuter un script php en background ou en parallèle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut Exécuter un script php en background ou en parallèle
    Bonjour,

    J'ai développé une application web qui traite de gros fichiers Excel. Le terme que l'on utiliser c'est "ventiler", "ventilation" fichier Excel.
    Le souci c'est qu'une opération de ventilation prenne des heures (de 30 mn à 3 heures), c'est possible en utilisant set_time_limit(0) dans le script.

    Le but c'est que le lancement de ce script ne bloque pas l'utilisation de l'interface graphique de l'application, ce qui est le cas actuellement car il faut attendre que le fichier php soit totalement exécuté avant que le site soit utilisable. Le but est donc: quand on clique sur le bouton "ventiler", le script correspondant soit exécuté séparément et l'interface graphique demeure utilisable pour d'autres taches.

    Oui, je sais, multithread sous PHP, ça n'existe pas. Mais quelle serait la solution équivalente?

    merci d'avance!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Bonjour,

    Personnellement dans un cas comme ça j'aurais tendance à utiliser un script PHP en console (cli) en utilisant exec ou system.

  3. #3
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Merci pour ces fonctions
    mais ma question c'est est-ce que ces fonctions laissent la commande s'exécuter en arrière-plan ou bien il faut attendre que la commande finisse pour passer à l'instruction suivante?

    J'ai lu une note du manuel PHP:
    Note:

    Si vous démarrez un programme en utilisant cette fonction et que vous voulez le laisser tourner en arrière plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier, ou un autre flux de sortie, sinon PHP attendra jusqu'à la fin de l'exécution du programme
    Comment mettre un flux de sortie?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Par défaut
    Bonjour,

    essaye de declancher le traitement via Ajax
    +
    http://php.net/manual/en/function.ignore-user-abort.php

  5. #5
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    Ajax ou pas, cela ne fera-t-il pas planter le navigateur si l'ajax ne se terminera qu'au bout de 30 mn à 3h la durée d'exécution du script php.

    La fonction ignore_user_abort() est intéressant mais je ne crois pas que c'est ce qui me convient dans mon problème non?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Un flux de sortie pour une commande linux c'est ainsi :
    Tu rediriges ainsi le flux vers un fichier qui ne conserve rien en mémoire (mais prévu pour).

    Le plus simple reste d'effectuer une requête Ajax pour lancer le script sans attendre de retour.
    Dans ton script tu peux utiliser une variable de session pour indiquer l'avancement.
    Et tu peux donc faire un second script renvoyant la valeur de cette variable appelé via une requête Ajax périodique.

    Ainsi pas de souci.

Discussions similaires

  1. Exécuter un script PHP CLI en background
    Par newty dans le forum Langage
    Réponses: 1
    Dernier message: 24/05/2011, 22h08
  2. Réponses: 10
    Dernier message: 06/03/2007, 11h07
  3. Réponses: 3
    Dernier message: 26/02/2007, 19h19
  4. [AJAX] XMLHTTPRequest => impossible d'exécuter tout script php
    Par AzertyH dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 24/11/2006, 19h01
  5. [FLASH MX2004] Exécution de script PHP
    Par dleu dans le forum Flash
    Réponses: 2
    Dernier message: 30/03/2005, 19h10

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