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 :

Traitement continu d'une tache


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Traitement continu d'une tache
    Bonjour,

    Suis-je confronté à une limitation de PHP ?

    Je veux exécuter une traitement la nuit pendant un laps de temps assez grand (exemple de 22h a 5h) pour exécuter des importations et des mises à jours de valeurs. Comment faire pour que la tache s'exécute en boucle ?

    Piste d'idée faire une task CRON pour lancer une tache (je travaille avec symfony 1.2 pour informations) mais comment répéter cette tache en boucle ?

    Peut-être en relançant la même taches après une partie du traitement (pour ne pas arriver à la limite du temps d'exécution ? Mais dans ce cas en cas de plantage d'une tâche je ne peut assurer sa continuité ?

    Peut-être en exécutant une tache Cron toutes les "max_execution_time ? mais je perd du temps de calcul en faisant cela ?

    Avez-vous une idée ?

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est plutot une problèmatique Cron : il est peut etre possible de repeter une tâche.

    tu peux aussi lire
    http://matthieu.developpez.com/execution_periodique/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse tu pense qu'il faut que je m oriente vers un cron.

    Que pensez vous des outils comme Gearman ou encore Supervisor ?

    Je viens de tester supervisor c'est assez pratique pour lancer une tache en boucle (avec possibilité de couper la tache en fonction des EXIt STATUS) mais par contre pour enchainer des taches ca me semble très complexe.

  4. #4
    Membre habitué Avatar de Epica84
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 164
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par elife63 Voir le message
    Bonjour,

    Suis-je confronté à une limitation de PHP ?
    Déjà sympa un peu de politesse . Mais je trouve que la question vous auriez dût la mettre à la fin.

    Citation Envoyé par elife63 Voir le message
    Je veux exécuter une traitement la nuit pendant un laps de temps assez grand (exemple de 22h a 5h) pour exécuter des importations et des mises à jours de valeurs. Comment faire pour que la tache s'exécute en boucle ?
    Tâches windows possible je pense que vous pouvez lancez le script dans le gestionnaires des taches de windows @ 22 heures et le 'forcer' à s'arrêter à 5 heures.

    Citation Envoyé par elife63 Voir le message
    Piste d'idée faire une task CRON pour lancer une tache (je travaille avec symfony 1.2 pour informations) mais comment répéter cette tache en boucle ?
    Connais pas, je fais mes script

    Citation Envoyé par elife63 Voir le message
    Peut-être en relançant la même taches après une partie du traitement (pour ne pas arriver à la limite du temps d'exécution ? Mais dans ce cas en cas de plantage d'une tâche je ne peut assurer sa continuité ?
    set_time_limit ??? C'est une fonction PHP qui permet de ralonger le temps d'éxecution du script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_time_limite(3000);// cette ligne veut dire que le php.ini du serveur ou du local sera exécuter pendant 3000 secondes // !! Le script peut s'arretez avant mais si il n'a pas de boucle de sorti il s'executera jusqu'à 3000 secondes !! \\
    Sinon pour le plantage, vous auriez du gerer dans le code les éventuelles contraintes la on entre dans un autre problème (perte de la connexion, on se fait virer par le site d'importation, micro-coupure, etc, ...)


    Citation Envoyé par elife63 Voir le message
    Peut-être en exécutant une tache Cron toutes les "max_execution_time ? mais je perd du temps de calcul en faisant cela ?

    Avez-vous une idée ?
    Je ne connais pas Cron ... mais max_execution_time je déconseille car si tu dois faire sleep dans ton code alors le max_execution_time ne sera pas affecté du temps du sleep ...

    Voilà en espérant avoir eu une idée pour vous aidez
    ARLES, du 02 au 05 Avril 2010, Féria de Pâques.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci de votre réponse.
    La politesse normalement cela me connait

    Donc, si je résume, d'après vous je maximise le set_time_limite mais je ne touche pas au max_execution_time.

    En ayant un peu plus test Supervisor, il est vraiment pratique pour faire une boucle de traitement. Mais par contre la programmation d'événements est assez complexes pour enchainer les taches.

    Merci, Bonne journée.

  6. #6
    Membre habitué Avatar de Epica84
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 164
    Points : 188
    Points
    188
    Par défaut
    Si vous souhaitez affichez les résultats en temps voulu regarder
    les fonction ob_flush()et flush cela affochera les résultats c'est un petit plus .

    Moi perso c'est ce que je fais je set_time_limite(80000) comme ça je suis tranquille

    Voilà
    ARLES, du 02 au 05 Avril 2010, Féria de Pâques.

Discussions similaires

  1. [PR-2013] plusieurs personnes pour une tache en continue
    Par potcho dans le forum Project
    Réponses: 1
    Dernier message: 18/11/2015, 16h48
  2. abonner une fenetre à un traitement continu
    Par Amroth dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 22/10/2009, 17h48
  3. traitement de fichier XML dans une Tache planifiée
    Par marivi dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 21/06/2005, 10h40
  4. Créer une tache planifié (.bat ou wsh)
    Par BRAUKRIS dans le forum Windows
    Réponses: 4
    Dernier message: 18/03/2004, 17h12
  5. [JSP] Ajout d'une tache dans le planificateur Windows
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 12/09/2003, 15h10

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