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

  1. #1
    Membre régulier
    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/...i_nl_promo.php 2>&1 > http://www.monsite.fr/envoi_mailing/cronlog.log


    Mais ça ne fonctionne pas :/

  2. #2
    Expert éminent sénior
    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
    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
    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
    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
    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
    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
    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