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

Unix Discussion :

Rediriger la sortie d'erreur standard d'un cron vers un fichier


Sujet :

Unix

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut Rediriger la sortie d'erreur standard d'un cron vers un fichier
    Bonjour, actuellement un cron lance un fichier php toutes les 15 minutes. Or depuis quelques temps l'effet attendu par le script n'est plus le même. Je veux donc déboguer tout ça en:
    1) réduisant le délais d'attente entre deux appels (1 minute par exemple)
    2) en redirigeant la sortie d'erreur standard vers un fichier (que j'ai appelé cronlog.log)

    voici ce que j'ai écris en me basant sur plusieurs sources:

    */1 * * * * GET http://www.monsite.fr/envoi_mailing/envoi_nl_promo.php 2>&1 > http://www.monsite.fr/envoi_mailing/cronlog.log


    Mais ça ne fonctionne pas :/

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Mais ça ne fonctionne pas :/
    Normal.

    3 points:
    • Les URL sont utilisées pour récupérer des ressources. Pas pour écrire. Donc cherche l'équivalent local au serveur de ton fichier de sortie désigné par "http://...."
    • Pourquoi ta ligne du crontab écrit directement une requête http alors qu'il faut une commande *n?x ?
    • Tu as inversé les redirections et ce n'est pas anodin !
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      commande 2>&1 >fichier_sortie
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      commande >fichier_sortie 2>&1
      Ces deux commandes ne font pas la même chose.
      Celle que tu as écrite est la première et celle que tu voulais est la seconde.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Alors déjà merci Flodelarab d'avoir répondu.

    J'ai relu attentivement plusieurs fois tes 3 points et voilà ce que j'en ai déduit:

    */1 * * * * GET /var/www/boutique/envoi_mailing/envoi_nl_promo.php >/var/www/boutique/envoi_mailing/cronlog.log 2>&1


    J'ai effectivement quelque chose qui s'écrit dans mon fichier cronlog.log, seulement c'est pas ce que j'attendais, j'obtiens la réécriture complète du contenu du fichier envoi_nl_promo.php

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 722
    Points
    12 722
    Par défaut
    Bonjour,
    Soit tu passes par le serveur http pour l'exécution du code php, soit tu dis à php de l'exécuter, en tout cas, ta commande "GET" ne sait pas exécuter du php...
    Cordialement.

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    j'obtiens la réécriture complète du contenu du fichier envoi_nl_promo.php
    Forcément. Il fallait changer l'adresse du fichier destination mais pas celui de la source qui a besoin d'être interprété par un serveur php.

    Pourquoi ne pas faire ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    */1 * * * * wget  "http://www.monsite.fr/envoi_mailing/envoi_nl_promo.php" >/var/www/boutique/envoi_mailing/cronlog.log
    Utilise wget ou curl, selon tes préférences.


    En même temps, il y a quelques doutes sur ce que tu fais. Si ta page php affiche des messages, il ne le fait pas sur la sortie d'erreur.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    En même temps, il y a quelques doutes sur ce que tu fais. Si ta page php affiche des messages, il ne le fait pas sur la sortie d'erreur.
    Je voudrais récupérer ce qui est écrit a chaque fois qu'il y a un "echo" dans le code. Peut importe la manière au final, moi ce que je souhaite c'est débuger
    Et la avec ta solution je n'ai plus rien dans le cronlog.log

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    As-tu vérifié :
    • Si wget était installé sur ton appareil ?
    • Si curl était installé sur ton appareil ?
    • Si la page php était accessible ?
    • Si le script php ne plantait pas ?
    • Que quand tu demandes la page php dans ton navigateur, il te renvoie une page autre que blanche ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Points : 73
    Points
    73
    Par défaut
    Merci pour ta réponse. En fait ce que je cherchais à faire je pouvais le faire directement en écrivant directement l'url de mon cron dans la barre d'adresse de mon navigateur et ainsi pouvoir debuguer

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

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