¿Cómo uso curl en un trabajo cron?

12

Necesito configurar un trabajo cron en cpanel que llama a una URL (en el mismo servidor) una vez por semana. Iba a usar wget pero resulta que esto está deshabilitado en el servidor compartido que se está usando.

¿Hay una alternativa a wget ? He oído que se puede usar curl pero no sé cómo configurarlo en un comando cron.

Además, ¿cuál es el comando para hacer que el cronjob no haga nada al finalizar?

Cualquier idea muy apreciada!

davidhyland
fuente
1
¿Qué haría el wget si pudieras usarlo?
user9517
¿Por qué permitirían curl en caso de que hayan deshabilitado wget?
andol
@Iain - se necesita para procesar un script PHP
davidhyland
@Andol: muy buena pregunta. así es como es
davidhyland

Respuestas:

20

en lugar de usar wget, curl funciona así:

curl --silent http://domain.com/cron.php

que funcionará de la misma manera que wget. si está iniciando un archivo php, ¿hay alguna razón por la que no pueda ejecutarlo a través del intérprete php de la línea de comandos de esta manera?

php -q /path/to/cron.php

lo mismo en una solicitud de servidor web y, a menudo, funcionará mucho más rápido y sin ciertas restricciones de tiempo de espera presentes cuando se llama a través de servidor web / curl

anthonysomerset
fuente
Llamar a curl de esa manera imprimirá el resultado en stdout. Si desea comportarse de manera equivalente a wget, y guardar la salida en un nombre de archivo basado en la url, también desea agregar el indicador --remote-name.
andol
¿El --silent significa que no hay respuesta o salida?
davidhyland
1
Además, llamar al script php desde la línea de comando no necesariamente produce el mismo resultado. Además de la posibilidad de una configuración diferente, también existe el escenario común de que el script se ejecute como un usuario diferente de esa manera. Todo depende de la configuración.
andol
Bueno, lo tengo al trabajo utilizando "rizo --silent domain.com/script.php > / dev / null 2> & 1", pero también funciona bien con "rizo -o --url domain.com/script.php > / dev / null 2> & 1 "¿cuál es la diferencia?
davidhyland
1
El primer comando envía toda la salida a / dev / null, el segundo creará un archivo llamado -urlen el directorio de inicio del usuario que ejecuta el script, que contiene la salida de su archivo php, el resto de la salida va a / dev / null.
user9517
6

Si el rizo está disponible, puede intentar algo como

1 1 * * 0  /usr/bin/curl --silent http://example.come/some.php &>/dev/null

Eso debería hacer que el rizo sea completamente silencioso para que no reciba ningún correo electrónico al finalizar.

usuario9517
fuente
44
Yo recomendaría usar la opción --show-error también, por lo que es silencioso para la operación normal pero generará un error si sucede.
emerino
5

Sugeriría agregar el parámetro "-m" además de --silent ya que este parámetro establece el tiempo máximo permitido para la transferencia. Imagine que llama al cron cada minuto y el script tarda 2 minutos, esto puede tener un impacto negativo en la carga del servidor u otras cosas.

1 1 * * 0  /usr/bin/curl -m 120 -s http://example.come/some.php &>/dev/null
Johnny Vietnam
fuente