2009-08-24 7 views
14

Tengo un script que depuro con un montón de instrucciones de eco. Esto se ejecuta cada 3 minutos en mi servidor por cron, y a veces dejo las declaraciones de eco allí. No van a un navegador, solo van ... ¿a algún lado?Si repito una afirmación y nadie la oye, ¿alguna vez se hizo eco? (Pregunta de trabajo de cron de PHP)

Supongo que es una pregunta vaga, pero ¿qué sucede cuando no hay un usuario final o salida para una declaración de eco? ¿Acapara la memoria? ¿Simplemente se desvanece? Agradecería cualquier ayuda para entender esto.

+2

Votación hacia arriba por poesía del título. :) (Y el interés mutuo, pero no importa eso.) – agorenst

+0

Sí, estoy de acuerdo con Agor, buen título! – DGM

+1

¡¿Obtienes puntos por la poesía del título? !! Bueno, sí, es mucho mejor que algunos que he visto. – pavium

Respuesta

10

La respuesta es sí, y la salida es enviada por correo a la cuenta que ejecuta la tarea cron. Usted puede cambiar esto en el archivo crontab mediante el establecimiento de una opción de "mailto = nombredecuenta", como este ejemplo de archivo cron:

MAILTO=root 

# run a script every hour 
01 * * * * root run-parts /etc/cron.hourly 
#etc. 

Cualquier salida de la tarea cron anterior sería enviado al usuario root. Como ha escrito Mike B, también puede simplemente redirigir la salida en otra parte de la línea de tareas utilizando el operador >:

01 * * * * php testscript.php > /var/log/logfile.log 

en cuyo caso cron no lo ve y no envía un correo electrónico.

La conclusión es que si deja algunas declaraciones echo en un script PHP y lo establece como un trabajo cron, entonces comenzará a recibir correos electrónicos del cron daemon.

+3

Puede redirigir a '/ dev/null', si no desea conservar la salida. Todavía se imprimirá, pero se descartará inmediatamente, y por lo tanto no ocupará ningún recuerdo. – troelskn

+0

@troelskn - definitivamente una estrategia popular. – zombat

+2

Así que descubrí que estaba usando el 75% de mi cuota de espacio de disco en ese servidor, y miré y miré ... y encontré 3 gigas de correo en el directorio maildir. ¡Ahí vas! –

9

Sí, tienen una salida de pero a nadie en particular (Consulte zombat's answer, se envía por correo al propietario de la crontask). Se puede escribir la salida de la secuencia de comandos a un archivo a través de:

php myscript.php > /var/log/cronlog.log 

(asumiendo que usted está utilizando Linux ya que dijo cron y tarea no programada)

+0

¿Y están guardados en la memoria o algo así como eso? ¿O olvidarse de comentar algunos ecos no es gran cosa? –

+1

@Alex: entran en el búfer STDOUT, así que sí, se guardan en la memoria. Pero se vacía periódicamente y tiene un tamaño máximo. La fuga de la memoria no sería tus declaraciones de eco. – Eric

+0

Según lo declarado por zombat, la salida se envía por correo al propietario del trabajo cron. Por lo general, es una cuenta del sistema, y ​​por lo tanto, a veces es difícil de encontrar si tiene direcciones virtuales y tal. – DGM

Cuestiones relacionadas