J'exécute des scripts par des tâches cron sous Debian avec un serveur
Apache2 et ceux ci de façon aléatoire parfois se terminent correctement,
parfois voient leur processus disparaitre complètement alors que le
traitement n'est pas terminé.
Lors de ces arrêts soudains je n'obtiens aucune erreur dans le fichier
de log que j'ai mis en place et qui fonctionne correctement, log que
j'obtiens par le symbole chevron, donc tout erreur affichée doit y être,
et certaines y sont d'ailleurs mais ne correspondent pas à mon problème.
Mon script contient un set_time_limit(0) étant donné que certaines
tâches peuvent durer plus d'une heure, de plus j'ai rajouté
l'instruction @ini_set('memory_limit','3000M') car nous traitons de
gros fichiers pouvant occuper de la place en mémoire.
Je ne vois donc pas ce qui pourrait provoquer ce qui ressemble pourtant
à un timeout de ces scripts, d'autant que la plupart du temps si je les
relance ils finissent par se terminer en allant jusqu'à la fin du script.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thibault Taillandier
Bonjour,
Tu dis extraire la sortie des log avec > Ceci ne récupère à priori que la sortie standard STDOUT, et pas la sortie erreur STDERR. Il vaudrait mieux utiliser : $ php script.php 1>&2 > /var/log/monfichier.log
Encore faut-il que les erreurs soient bien affichées, pour t'en assurer je te conseille la manière forte dans un premier temps, histoire de diagnostiquer le pb : ini_set('log_errors',1); ini_set('display_errors',1); error_reporting(E_ALL);
Mieux encore, il vaudrait mieux utiliser le système de log de php : utiliser la fonction error_log('Il se passe ceci'); dans ton script, pour suivre le bon déroulement des actions.
Bon courage,
Bonjour,
J'exécute des scripts par des tâches cron sous Debian avec un serveur Apache2 et ceux ci de façon aléatoire parfois se terminent correctement, parfois voient leur processus disparaitre complètement alors que le traitement n'est pas terminé. Lors de ces arrêts soudains je n'obtiens aucune erreur dans le fichier de log que j'ai mis en place et qui fonctionne correctement, log que j'obtiens par le symbole chevron, donc tout erreur affichée doit y être, et certaines y sont d'ailleurs mais ne correspondent pas à mon problème. Mon script contient un set_time_limit(0) étant donné que certaines tâches peuvent durer plus d'une heure, de plus j'ai rajouté l'instruction @ini_set('memory_limit','3000M') car nous traitons de gros fichiers pouvant occuper de la place en mémoire.
Je ne vois donc pas ce qui pourrait provoquer ce qui ressemble pourtant à un timeout de ces scripts, d'autant que la plupart du temps si je les relance ils finissent par se terminer en allant jusqu'à la fin du script.
Merci d'avance pour votre aide.
-- Thibault Taillandier
Bonjour,
Tu dis extraire la sortie des log avec >
Ceci ne récupère à priori que la sortie standard STDOUT, et pas la
sortie erreur STDERR.
Il vaudrait mieux utiliser :
$ php script.php 1>&2 > /var/log/monfichier.log
Encore faut-il que les erreurs soient bien affichées, pour t'en assurer
je te conseille la manière forte dans un premier temps, histoire de
diagnostiquer le pb :
ini_set('log_errors',1);
ini_set('display_errors',1);
error_reporting(E_ALL);
Mieux encore, il vaudrait mieux utiliser le système de log de php :
utiliser la fonction error_log('Il se passe ceci'); dans ton script,
pour suivre le bon déroulement des actions.
Bon courage,
Bonjour,
J'exécute des scripts par des tâches cron sous Debian avec un serveur
Apache2 et ceux ci de façon aléatoire parfois se terminent correctement,
parfois voient leur processus disparaitre complètement alors que le
traitement n'est pas terminé.
Lors de ces arrêts soudains je n'obtiens aucune erreur dans le fichier
de log que j'ai mis en place et qui fonctionne correctement, log que
j'obtiens par le symbole chevron, donc tout erreur affichée doit y être,
et certaines y sont d'ailleurs mais ne correspondent pas à mon problème.
Mon script contient un set_time_limit(0) étant donné que certaines
tâches peuvent durer plus d'une heure, de plus j'ai rajouté
l'instruction @ini_set('memory_limit','3000M') car nous traitons de
gros fichiers pouvant occuper de la place en mémoire.
Je ne vois donc pas ce qui pourrait provoquer ce qui ressemble pourtant
à un timeout de ces scripts, d'autant que la plupart du temps si je les
relance ils finissent par se terminer en allant jusqu'à la fin du script.
Tu dis extraire la sortie des log avec > Ceci ne récupère à priori que la sortie standard STDOUT, et pas la sortie erreur STDERR. Il vaudrait mieux utiliser : $ php script.php 1>&2 > /var/log/monfichier.log
Encore faut-il que les erreurs soient bien affichées, pour t'en assurer je te conseille la manière forte dans un premier temps, histoire de diagnostiquer le pb : ini_set('log_errors',1); ini_set('display_errors',1); error_reporting(E_ALL);
Mieux encore, il vaudrait mieux utiliser le système de log de php : utiliser la fonction error_log('Il se passe ceci'); dans ton script, pour suivre le bon déroulement des actions.
Bon courage,
Bonjour,
J'exécute des scripts par des tâches cron sous Debian avec un serveur Apache2 et ceux ci de façon aléatoire parfois se terminent correctement, parfois voient leur processus disparaitre complètement alors que le traitement n'est pas terminé. Lors de ces arrêts soudains je n'obtiens aucune erreur dans le fichier de log que j'ai mis en place et qui fonctionne correctement, log que j'obtiens par le symbole chevron, donc tout erreur affichée doit y être, et certaines y sont d'ailleurs mais ne correspondent pas à mon problème. Mon script contient un set_time_limit(0) étant donné que certaines tâches peuvent durer plus d'une heure, de plus j'ai rajouté l'instruction @ini_set('memory_limit','3000M') car nous traitons de gros fichiers pouvant occuper de la place en mémoire.
Je ne vois donc pas ce qui pourrait provoquer ce qui ressemble pourtant à un timeout de ces scripts, d'autant que la plupart du temps si je les relance ils finissent par se terminer en allant jusqu'à la fin du script.
Merci d'avance pour votre aide.
-- Thibault Taillandier
Olivier Miakinen
Tu dis extraire la sortie des log avec > Ceci ne récupère à priori que la sortie standard STDOUT, et pas la sortie erreur STDERR.
Euh... non. C'est le flux 2 qu'il faut rediriger vers le 1, et seulement après avoir branché stdout sur le fichier de log. Donc : $ php script.php >/var/log/monfichier.log 2>&1
Tu dis extraire la sortie des log avec >
Ceci ne récupère à priori que la sortie standard STDOUT, et pas la
sortie erreur STDERR.
Euh... non. C'est le flux 2 qu'il faut rediriger vers le 1, et seulement
après avoir branché stdout sur le fichier de log. Donc :
$ php script.php >/var/log/monfichier.log 2>&1
Euh... non. C'est le flux 2 qu'il faut rediriger vers le 1, et seulement après avoir branché stdout sur le fichier de log. Donc : $ php script.php >/var/log/monfichier.log 2>&1
John GALLET
Bonjour,
J'exécute des scripts par des tâches cron sous Debian avec un serveur Apache2 Je ne vois pas ce qu'apache vient faire là dedans. Quelle est la ligne
de commande appelée en crontab ? Un wget ?
a++; JG
Bonjour,
J'exécute des scripts par des tâches cron sous Debian avec un serveur
Apache2
Je ne vois pas ce qu'apache vient faire là dedans. Quelle est la ligne
J'exécute des scripts par des tâches cron sous Debian avec un serveur Apache2 Je ne vois pas ce qu'apache vient faire là dedans. Quelle est la ligne
de commande appelée en crontab ? Un wget ? Arrete moi si je déconnes mais n'est ce pas l'instance Apache qui répond
au navigateur qui s'arrête trop tôt ?
a++; JG
John GALLET
Bonjour,
J'exécute des scripts par des tâches cron sous Debian avec un serveur Apache2 Je ne vois pas ce qu'apache vient faire là dedans. Quelle est la ligne
de commande appelée en crontab ? Un wget ? Arrete moi si je déconnes mais n'est ce pas l'instance Apache qui répond
au navigateur qui s'arrête trop tôt ?
Ca dépend, d'où ma question. Je rappelle que PHP peut fonctionner en TROIS modes MUTUELLEMENT EXCLUSIFS pour lequel UN SEUL parle à un serveur web:
1) requête HTTP, par exemple par un navigateur ou un wget en crontab. Là, il faut un serveur web et donc son time_out va jouer.
2) mode CLI (Command Line Interface). Pas de serveur web, pas de time_out gérer de la même manière. Cf http://fr2.php.net/manual/en/features.commandline.php C'est en particulier le cas où on appelle en crontab une ligne du genre :
/usr/local/php -f toto.php >& a.log
NB: je perturbe volontairement mes camarades sur la redirection du canal STDERR, ceci est la syntaxe du csh ;-)
3) php-gtk (comparable dans son fonctionnement à java+awt)
a++; JG
Bonjour,
J'exécute des scripts par des tâches cron sous Debian avec un serveur
Apache2
Je ne vois pas ce qu'apache vient faire là dedans. Quelle est la ligne
de commande appelée en crontab ? Un wget ?
Arrete moi si je déconnes mais n'est ce pas l'instance Apache qui répond
au navigateur qui s'arrête trop tôt ?
Ca dépend, d'où ma question. Je rappelle que PHP peut fonctionner en TROIS
modes MUTUELLEMENT EXCLUSIFS pour lequel UN SEUL parle à un serveur web:
1) requête HTTP, par exemple par un navigateur ou un wget en crontab. Là,
il faut un serveur web et donc son time_out va jouer.
2) mode CLI (Command Line Interface). Pas de serveur web, pas de time_out
gérer de la même manière.
Cf http://fr2.php.net/manual/en/features.commandline.php
C'est en particulier le cas où on appelle en crontab une
ligne du genre :
/usr/local/php -f toto.php >& a.log
NB: je perturbe volontairement mes camarades sur la redirection du canal
STDERR, ceci est la syntaxe du csh ;-)
3) php-gtk (comparable dans son fonctionnement à java+awt)
J'exécute des scripts par des tâches cron sous Debian avec un serveur Apache2 Je ne vois pas ce qu'apache vient faire là dedans. Quelle est la ligne
de commande appelée en crontab ? Un wget ? Arrete moi si je déconnes mais n'est ce pas l'instance Apache qui répond
au navigateur qui s'arrête trop tôt ?
Ca dépend, d'où ma question. Je rappelle que PHP peut fonctionner en TROIS modes MUTUELLEMENT EXCLUSIFS pour lequel UN SEUL parle à un serveur web:
1) requête HTTP, par exemple par un navigateur ou un wget en crontab. Là, il faut un serveur web et donc son time_out va jouer.
2) mode CLI (Command Line Interface). Pas de serveur web, pas de time_out gérer de la même manière. Cf http://fr2.php.net/manual/en/features.commandline.php C'est en particulier le cas où on appelle en crontab une ligne du genre :
/usr/local/php -f toto.php >& a.log
NB: je perturbe volontairement mes camarades sur la redirection du canal STDERR, ceci est la syntaxe du csh ;-)
3) php-gtk (comparable dans son fonctionnement à java+awt)