Estoy ejecutando un script PHP en un cronjob y quiero enviar correos electrónicos cada 5 minutos.
Mi trabajo cron actual (crontab):
10 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1
El cronmail.php es el siguiente:
<?php
$from = 'D'; // sender
$subject = 'S';
$message = 'M';
$message = wordwrap($message, 70);
mail("[email protected]", $subject, $message, "From: $from\n");
?>
Pero no he recibido un correo electrónico en 30 minutos con esta configuración.

cromail.phpocronmail.php?Respuestas:
En un
crontabarchivo, los campos son:Entonces:
significa ejecutar
blaha los 10 minutos después de cada hora.Si desea cada cinco minutos, use:
es decir, cada minuto pero solo cada quinto, o:
para
cronejecutables más antiguos que no entienden la*/xnotación.Si aún parece que no funciona después de eso, cambie el comando a algo como:
y supervise ese archivo para asegurarse de que se escriba algo cada cinco minutos. Si es así, hay algún problema con sus scripts PHP. Si no es así, hay algún problema con tu
crondaemon.fuente
Su CRON debería verse así:
*/5 * * * *CronWTF es realmente útil cuando necesita probar su configuración CRON.
Podría ser una buena idea canalizar la salida a un archivo de registro para que pueda ver si su secuencia de comandos también arroja errores, ya que no los verá en su terminal.
También intente usar un shebang en la parte superior de su archivo PHP, para que el sistema sepa dónde encontrar PHP. Como:
#!/usr/bin/phpde esa manera puedes llamar a todo así
*/5 * * * * php /path/to/script.php > /path/to/logfile.logfuente
Está configurando su cron para que se ejecute en el décimo minuto cada hora.
Para configurarlo para que
every 5 minscambie a*/5 * * * * /usr/bin/php /mydomain.in/cronmail.php > /dev/null 2>&1fuente
usr/bin/phpparte faltante*/5 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1Si desea ejecutar un cron cada
nminuto, hay algunas opciones posibles según el valor den.ndivide 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)Aquí, la solución es sencilla haciendo uso de la
/notación:En lo anterior,
nrepresenta el valornymrepresenta un valor menor queno*. Esto ejecutará el comando en los minutosm,m+n,m+2n,...nNO divide 60Si
nno divide 60, no puede hacerlo limpiamente con cron, pero es posible. Para hacer esto, necesita poner una prueba en el cron donde la prueba verifica la hora. Esto se hace mejor cuando se mira la marca de tiempo de UNIX, el total de segundos desde1970-01-01 00:00:00 UTC. Digamos que queremos comenzar a ejecutar el comando la primera vez que Marty McFly llegó a Riverdale y luego repetirlo cadanminutos más tarde.Para que un cronjob se ejecute cada
42minuto después de `2015-10-21 07:28:00 ', el crontab se vería así:con
minutetestcmddefinido comoObservación: el tiempo UNIX no se ve afectado por los segundos intercalares
Observación:
cronno tiene una precisión inferior a un segundofuente
m/nnotación no parece funcionar en mis sistemas (Debian 9, Ubuntu 16.04). Solo*/nfunciona. Por ejemplo,5/5o4/10cedaError: bad minute; while reading /etc/crontabsyslog (en Ubuntu con cron v. 3.0pl1-128ubuntu2). ¿Se ha abandonado esta notación m / n o solo está disponible en algunos sistemas?m-59/n. Solo un rango puede tener un tamaño de paso. (verman 5 crontab). He actualizado la respuesta2 pasos para verificar si un cronjob está funcionando:
Ejecute manualmente el comando php:
/ usr / bin / php /mydomain.in/cromail.php
Y verifique si se muestra algún error
fuente
Para establecer x minutos, necesitamos establecer x minutos en el primer argumento y luego la ruta de su script
Por 15 minutos
fuente