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 :

tache planifiée php


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 109
    Points : 68
    Points
    68
    Par défaut tache planifiée php
    Bonjour,

    Je souhaite lancer une tâche planifiée windows.
    J'ai donc un mailPlanifie.php qui envoi un mail en faisant appel à un autre fichier dans le repertoire au dessus ../fonctionsmails.php

    mailPlanifie.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    include($documentRoot."/../fonctionsmails.php");
    $listeMailsContratsJournees=listeMailsContratsJournees();
    envoyerMails($listeMailsContratsJournees);
    fonctionsmails.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function envoyerMails($listeMails)
    {..if (!mail($destinataire,$titre,$corps, "From: ".$emetteur)){...}}
    function listeMailsContratsJournees()
    {..return $liste;}
    Ma tâche planifiée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\EasyPHP1-8\php\php.exe" -c ..\conf_files\php.ini -f ..\www\NomProjet\TachesPlanifiees\mailPlanifie.php
    Lorsque je lance mailPlanifie.php par IE, il s'exécute sans soucis et je reçoit bien le mail. Mais lorsque je lance la tâche planifiée, ça ne marche pas!
    Je suppose que c'est un problème de chemin mais je n'en suis pas sûre...

    Je précise que j'ai fait un autre fichier php qui envoie directement un mail et celui ci s'éxecute en tant que tâche planifié sans soucis...

    Quelqu'un aurait il une piste pour moi?
    Merci d'avance

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Mettre des chemins absolus pour être sûr ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 109
    Points : 68
    Points
    68
    Par défaut
    Dans la tâche planifiée tu veux dire?

    Dans le fichier php, j'ai pas dit comment j'avais défini cette variable:
    $documentRoot=$_SERVER['DOCUMENT_ROOT']."/NomProjet/TachesPlanifiees/";

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Dans un contexte non web, il ne risque pas de reconnaître des variables comme $_SERVER['DOCUMENT_ROOT'] (cf la sortie de la commande php -i). Il faut se baser sur autre chose (__FILE__ pour rester dynamique ?).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 109
    Points : 68
    Points
    68
    Par défaut
    Lorsque j'exécute ma tâche planifié, d'où ça suppose que ça execute le script?
    Dans C:\Program Files\EasyPHP1-8\php\ ou Dans C:\Program Files\EasyPHP1-8\www\NomProjet\TachesPlanifiees\ ou autre?
    En mettant des chemins relatifs j'ai toujours le meme soucis...

    Merci encore

  6. #6
    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
    Lance ton script avec php.exe depuis une ligne de commande, tu verras les erreurs qui se produisent.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Ça marche ça déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\EasyPHP1-8\php\php.exe" -c ..\conf_files\php.ini -f ..\www\NomProjet\TachesPlanifiees\mailPlanifie.php
    Parce que ça suppose que C:\Program Files\EasyPHP1-8\php (sauf erreur de ma part) soit le répertoire courant, chose que l'on spécifie à la ligne intitulée "Démarrer dans :" dans les propriétés de la tâche en question. Mais l'usage de chemins absolus permet d'éviter toute erreur.

    Ensuite, théoriquement il est possible de définir $documentRoot, de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #if (PHP_SAPI == 'cli')
        $documentRoot = dirname(__FILE__);
    (placé avant l'include dans mailPlanifie.php par exemple)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 109
    Points : 68
    Points
    68
    Par défaut
    Déjà avec la console, ça facilite pas mal le débuggage merci (le répertoire n'est apparament pas le même que si c'est exécuté dans IE)

    En effet, l'erreur affichée était que le document ../fonctionsmails.php était introuvable.
    J'ai donc utilliser ce qui suit:

    $documentRoot=dirname($_SERVER["PHP_SELF"]);
    include($documentRoot."/../fonctionsmails.php");

    Merci à tous de votre aide.

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

Discussions similaires

  1. tache planifié pour un script PHP
    Par mariouma11 dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2012, 08h21
  2. [EasyPHP] Taches planifiées et EasyPHP 5.3.8.1
    Par Zail01 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 05/03/2012, 00h44
  3. [SQL-Server] Tache planifiée script PHP utilisant connexion à BDD SQl Server
    Par flo73 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2012, 16h03
  4. tache planifiée et PHP
    Par erwan.bodere dans le forum Langage
    Réponses: 1
    Dernier message: 04/05/2006, 10h53
  5. Créer une tache planifié (.bat ou wsh)
    Par BRAUKRIS dans le forum Windows
    Réponses: 4
    Dernier message: 18/03/2004, 17h12

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