2012-03-30 22 views
6

Estoy a punto de desencadenar una llamada a un archivo PHP a través de curl en una programación. Estoy pensando en ejecutar el script cada 23:59:59 o simplemente un minuto antes de que el día pase mañana. ¿Algún mejor enfoque para esto? Todavía bastante confuso en la configuración de cron.cron trabajo minuto antes de mañana

Necesito asegurarme de ejecutar exactamente un segundo antes del día siguiente.

+0

Yo simpatizo por completo, la configuración de cron puede ser muy confuso. Voy a publicar una respuesta en un segundo :-) –

Respuesta

7

para ejecutar un script cada día a las 23:59:00, utilice la siguiente:

59 23 * * * root /path_to_file_from_root 

segundos no se pueden definir usando Cron, pero esto se debe hacer por usted.

Para ejecutar el script a las 23:59:59, use la función PHP sleep() para retrasar la ejecución del script en 59 segundos. Sin embargo, les aconsejaría 58 segundos, solo para asegurarme de que el script no se demore hasta después de la medianoche.

Esto es muy básico, podría hacerlo un poco más complejo y ejecutar pruebas para asegurarse de que el script se ejecute siempre a las 23:59:59 recuperando el tiempo y retrasándolo adecuadamente. Esto no debería ser necesario sin embargo.

<?php 

    // Any work that the script can do without altering the database, do here 

    // Delay the script by 58 seconds 
    sleep(58); 

    // Carry on with the rest of the script here, database updates etc 

?> 
+0

¿Esto significa que el cron se ejecutará exactamente a las 23:59:59, pero está visualmente configurado a las 23:59? –

+0

@Defensor No, no estaba claro en mi respuesta. Esto funcionará a las 23:59 todos los días. No puede especificar segundos usando crontab –

+0

@Defensor ¿Por qué necesita que se ejecute con tanta precisión? –

13
Minutes [0-59] 
| Hours [0-23] 
| | Days [1-31] 
| | | Months [1-12] 
| | | | Days of the Week [Numeric, 0-6] 
| | | | | 
* * * * * home/path/to/command/the_command.sh 




59 23 * * * home/path/to/command/the_command.sh 
+2

Esa es una muy buena visualización – sshow

+0

¡Respuesta fantástica +1! –

+0

¿Qué tal los 59 segundos? –

0

Puede configurar para que se ejecute exactamente 23:59:00 todos los días, echar un vistazo a los ejemplos ponen here. Específicamente mira el ejemplo no. 1, que explica exactamente cómo establecer un cronjob para un momento específico de cada día.

1

empezar a editar el crontab por

crontab -e 

o

vi /etc/cronatb 

Depende de distribución.

59 23 * * * root /path/to/your/php/file.php 

Tenga en cuenta que la columna "raíz" significa el nombre del usuario bajo el cual comenzar el trabajo, tal vez no estará disponible en su sistema.

intenta ejecutar

man crontab 

para más detalles

+0

+1 muy bien explicado –

Cuestiones relacionadas