¿Cómo puedo crear una tarea cron desde el Panel LWS?

Procédure

¿Qué es una tarea cron?

El objetivo de una tarea cron es ejecutar automáticamente un script, un comando o un programa a horas determinadas.

Con"LWS cron job", puede programar un script en su sitio para que se ejecute en diferentes momentos. Por ejemplo, una vez a la semana, una vez al día, el día 8 de cada mes, etc.

Cron es una herramienta muy útil para que los administradores de sistemas automaticen diversas tareas, como la copia de seguridad de datos, la actualización de software, elenvío de correos electrónicos, etc.

A estas tareas se les aplica un tiempo de espera de 240s, lo que significa que si tu script tarda más de 4 minutos en ejecutarse, se cerrará automáticamente pasados 4 minutos.

¿Cómo crear una tarea cron?

Acceda a la herramienta Tarea Cron

En primer lugar, debe conectarse a su cuenta LWS y acceder al alojamiento compartido para el que desea crear una tarea cron.

Una vez en la gestión de tu servicio, busca el bloque"Base de datos y PHP" y haz clic en"Tareas cron".

¿Cómo puedo crear una tarea cron desde el Panel LWS?

Configurar la frecuencia de la tarea cron

Lo primero que debe configurar para su tarea cron es su periodicidad.

A este nivel, LWS ofrece preajustes en su herramienta para que puedas configurarlo en 1 clic.

Para ello, basta con utilizar la primera lista de la parte superior del formulario y seleccionar uno de los parámetros propuestos. Esto rellenará automáticamente los campos para que coincidan con la periodicidad indicada en la lista que haya seleccionado.

¿Cómo puedo crear una tarea cron desde el Panel LWS?

Si la periodicidad que desea establecer no está propuesta en esta primera lista, no se preocupe, podemos configurar cada elemento.

Para cada elemento (minutos, horas, días, etc.), puede introducir los valores manualmente o utilizar el campo de lista situado a la derecha de cada campo.

Así, por ejemplo, si quiero que mi tarea comience todos los días a las 12:27, todo lo que tengo que hacer es seleccionar el número 27 en la lista adjunta al campo de minutos y seleccionar 12:00 pm (mediodía) en la lista adjunta al campo de horas.

Consejos

  • Salvo en casos muy especiales, no recomendamos configurar una tarea cron para que se ejecute cada minuto para no saturar el servidor y, por tanto, reducir el rendimiento de su servicio.
  • Prefiera las tareas que se ejecutan por la noche y a horas específicas (como las 3.47am ) para evitar ejecutar sus tareas al mismo tiempo que posibles tareas automáticas, como pueden hacer algunos CMS o herramientas utilizadas en su sitio.

Configuración del campo de comandos

Existen tres formas de llamar a su script a través de la herramienta Cron Task:

  • Llamada PHP
  • Llamada wget
  • Llamada cURL

La diferencia entre estas tres opciones radica principalmente en la forma en que ejecutan su script.

Una llamada Wget o Curl utiliza el protocolo HTTP, lo que significa que estará sujeta a las configuraciones y restricciones de Apache, como el tiempo de espera, que puede ser relativamente corto.

Lallamada PHP, por otro lado, estará libre de las limitaciones que discutimos con los otros dos métodos. Piense en la llamada PHP como si fuera a través de una conexión SSH.

Por lo tanto, podría preguntarse qué método elegir para configurar su tarea Cron. Nuestra respuesta es que no hay diferencias reales para scripts básicos que se ejecutan rápidamente. Sin embargo, si su tarea CRON es bastante grande, con muchas acciones realizadas y por lo tanto un tiempo de ejecución un poco más largo, el método más adecuado será unallamada PHP. A diferencia de Curl o Wget, el tiempo de espera será mayor (4 min).

Vamos a ver cómo configurar una tarea cron para cada una de las llamadas mencionadas anteriormente. Tomaremos como ejemplo un sitio sencillo que llama a un script raíz.

Llamada cURL

Al hacer una llamada curl utilizando el protocolo HTTP, simplemente llamamos a la URL de nuestro archivo de la siguiente manera

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

También podemos necesitar enviar parámetros a nuestro script. Para ello, basta con añadirlos de la siguiente manera:

curl -d "param1=valor1&param2=valor2" -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

Esto nos permitirá recuperar los valores de estos parámetros en el código de nuestro script POST.

Opción Función
-s Modo silencioso (sin barra de progreso).
-H "Cache-Control: no-cache" Forzar no-cache en el servidor.
> /dev/null Redirige la salida para no guardar nada.

Llamada a Wget

Durante una llamada Wget, que también utiliza el protocolo HTTP, al igual que con la llamada cURL, también llamaremos a la URL de nuestro script. Esto dará :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php"

Si necesitamos pasar parámetros al script, con Wget no tendremos más remedio que pasar los parámetros en GET. He aquí cómo escribir el comando :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php?param1=value1&param2=value2"

En el script, podemos recuperar estos dos parámetros en GET.

Opción Función
--no-cache Evita el uso de cachés intermedias (útil con ciertos proxies).
--output-document=/dev/null No almacena nada localmente.
--header="Cache-Control: no-cache" Envía una cabecera HTTP para evitar el almacenamiento en caché del lado del servidor.

Llamada PHP

En el caso de un sitio sencillo, imaginemos que el archivo que contiene mi script se llama cron.php

Basta con introducir el siguiente comando en la herramienta Cron Task:

php /htdocs/cron.php

Aquí, la versión de PHP utilizada para ejecutar su script será la 8.0 por defecto.

Si desea utilizar una versión específica de PHP, simplemente modifique ligeramente la llamada. Por ejemplo, si desea utilizar la versión 7.2 para ejecutar el script, este es el comando llamado :

php72 /htdocs/cron.php

También podemos necesitar pasar un argumento que luego será utilizado en nuestro script.

Por ejemplo, imaginemos que el objetivo de nuestro script es enviar un correo electrónico en función de un criterio que definamos, como el cumpleaños. Por lo tanto, podríamos querer pasar este criterio en la llamada. He aquí cómo hacerlo a través de la línea de comandos :

php72 /htdocs/cron.php type=aniversario

Casos particulares

También existen casos especiales en función de lo que utilice para su sitio.

Por ejemplo, en el caso de un sitio creado con el framework Cakephp, la configuración de la tarea CRON será un poco diferente porque se hará a través de un comando SHELL llamado por el sistema del framework.

Imaginemos que tenemos un sitio de comercio electrónico creado con el framework Cakephp y que queremos configurar un script que envíe un email al mejor cliente para ofrecerle un código promocional.

Vamos a crear un comando Cake que llamaremos SendCP, que contendrá el script que gestiona lo que queremos hacer. Así es como configuraremos la tarea Cron :

php72 /htdocs/Consola/cake.php SendCP

Llevaría mucho tiempo dar un ejemplo de cada caso, pero con lo que se ha dado aquí, ya tienes una buena base para utilizar la herramienta de tareas Cron.

Utilizando los distintos ejemplos, ahora sabemos cómo escribir nuestro comando para :

  • simplemente ejecute nuestro script en los intervalos elegidos
  • ejecutar nuestro script añadiendo parámetros y a los intervalos elegidos

Crear un archivo de registro

Ahora vamos a ver cómo crear un archivo de registro para que podamos ver lo que sucedió durante el script llamado por Cron.

Para ello, utilizaremos el siguiente ejemplo para nuestro script CRON.

Ejemplo de una función PHP echo para el archivo de registro

<?php /* Para que no tengas que preocuparte por la caché */ header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); /* Escriba la fecha actual en el fichero, por ejemplo: 2023/01/19 12:24:01 */ /* PHP_EOL permite omitir una línea en el fichero */ echo date('Y/m/d h:i:s').PHP_EOL; /* Escriba la siguiente frase en el archivo de registro */ echo 'Grabando mi Cron'.PHP_EOL.PHP_EOL; ?>

Representación del archivo de registro después de lanzar el script a través de Cron Job

2023/01/19 02:57:01 Grabando mi Cron 2023/01/19 03:57:01 Grabando mi Cron 2023/01/19 04:57:01 Grabando mi Cron 2023/01/19 05:57:01 Grabando mi Cron 2023/01/19 06:57:01 Grabando mi Cron 2023/01/19 07:57:01 Grabando mi Cron 2023/01/19 08:57:01 Grabando mi Cron

Por lo tanto, lo que pongas en tu archivo de registro dependerá de ti y de lo que quieras controlar en tu script. Por ejemplo, podría ser una lista de acciones con el resultado de cada una.

Ejemplo de una llamada cURL con retorno en un archivo de registro

Para una llamada cURL, este es el comando a introducir en el campo "Comando":

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_curl.log 2>&1

En este ejemplo, se realizarán writebacks (echo PHP) en el archivo cron_curl.log de la carpeta logs. Si el archivo o carpeta no existe, se creará automáticamente.

Opción Función
-s Modo silencioso (sin barra de progreso).
-H "Cache-Control: no-cache" Forzar no-cache en el servidor.
> /htdocs/logs/cron_curl.log redirige la salida estándar (stdout) a cron_curl.log.
2>&1 también redirige los errores (stderr) al mismo archivo.

Ejemplo de llamada a wget con retorno a un archivo de registro

Para una llamada a Wget, éste es el comando a utilizar:

wget -O - -q --no-cache --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_wget.log 2>&1

En este ejemplo, la respuesta de escritura (echo PHP) se enviará al archivo cron_wget.log de la carpeta logs. Si el archivo o carpeta no existe, se creará automáticamente.

Opción Función
--no-cache Evita el uso de cachés intermedias (útil con algunos proxies).
--header="Cache-Control: no-cache" Envía una cabecera HTTP para evitar el almacenamiento en caché del lado del servidor.
--post-data="..." añade una cabecera HTTP personalizada.
> /htdocs/logs/cron_wget.log redirige la salida estándar (stdout) a cron_wget.log.
2>&1 también redirige los errores (stderr) al mismo archivo.

Ejemplo de una llamada PHP con retorno a un archivo de registro

Para una llamada PHO, este es el comando a utilizar:

php72 /htdocs/cron.php >> /htdocs/logs/cron_php.log

En este ejemplo, la retroalimentación de escritura (echo PHP) será enviada al archivo cron_php.log en la carpeta logs. Si el archivo o la carpeta no existen, se crearán automáticamente.

¿Cómo puedo gestionar mis tareas cron?

Ver mis tareas cron creadas

Una vez que haya creado sus tareas cron, puede encontrarlas directamente en el listado que aparece debajo del formulario de adición.

¿Cómo puedo crear una tarea cron desde el Panel LWS?

Aquí encontrará una lista con el comando registrado, la periodicidad y la opción de eliminar una tarea cron o pausarla.

¿Cómo puedo crear una tarea cron desde el Panel LWS?

¿Cómo modifico una tarea cron?

Si tienes un paquete LWS Starter o superior, puedes modificar el cron job de tu paquete a través del Web Terminal accesible desde la administración de tu paquete.

Para ello, conéctese a su alojamiento y acceda al alojamiento compartido cuyo cron desea modificar.

Haga clic en"Terminal" en la sección "Software".

¿Cómo puedo crear una tarea cron desde el Panel LWS?

Acceda al archivo cron mediante el siguiente comando

crontab -e

¿Cómo puedo crear una tarea cron desde el Panel LWS?

Una vez en el archivo cron, busque en el archivo la tarea que desea modificar. Cada línea del archivo representa una tarea independiente. A continuación, modifique la tarea cron, asegurándose de que la sintaxis sigue siendo correcta. A continuación, guárdela mediante la combinación de teclas [CTRL] +X y luego"Y". A continuación, pulse [Intro].

A continuación, puede comprobar si la tarea cron se ha modificado correctamente mediante el siguiente comando:

crontab -l

¿Cómo puedo crear una tarea cron desde el Panel LWS?

Uso de tareas cron con DNS de Cloudflare

¿Por qué no funcionan mis crons con CloudFlare?

Has enlazado tu dominio con CloudFlare usando las DNS de este último y quieres configurar una tarea cron desde tu área de cliente en la sección asociada, pero la tarea sólo se ejecuta una vez sin repetirse en el intervalo de tiempo que querías. Este problema es conocido, CloudFlare bloquea la ejecución de crons enviados desde nuestros servicios. Para superar este problema, he aquí una solución.

Ejecutar una tarea cron usando CloudFlare

Las tareas cron configuradas desde el área de clientes no funcionan si utiliza CloudFlare DNS. Para solucionar este problema, siga este procedimiento:

  1. Cree un subdominio (por ejemplo: cron.dominio.ext) desde su espacio cliente siguiendo esta documentación
  2. Coloque el archivo que debe ejecutar su tarea cron en la carpeta que lleva el nombre de su subdominio en el espacio FTP de su alojamiento.
  3. Cree su cron job desde el espacio cliente siguiendo las instrucciones anteriores de esta documentación.
  4. Conéctese a su cuenta CloudFlare vinculada a su nombre de dominio.

En la sección "DNS", añada un registro CNAME como se muestra en el siguiente ejemplo:

¿Cómo puedo crear una tarea cron desde el Panel LWS?

Sustituye"cron" por el nombre de tu subdominio y"dominio.ext" por el nombre de tu dominio.

Asegúrese de que la nube es de color gris y no naranja. Esto indica a CloudFlare que no desea utilizar sus servicios para este subdominio.

A continuación, puede hacer clic en el botón"Añadir registro".

Conclusión

Ahora ya sabe cómo : - Entender el propósito y el funcionamiento de un trabajo cron 🤖

  • Configurar y ejecutar scripts automáticamente utilizando la tarea cron del LWS ⏱️
  • Acceder a la herramienta de tareas cron y configurar la periodicidad
  • Utilizar los diferentes métodos de llamada (PHP, wget, cURL) para tus scripts 🌐
  • Utilizar archivos de registro para supervisar tus tareas cron 📝
  • Gestione, modifique y visualice sus tareas cron creadas 🛠️
  • Uso de tareas cron con DNS de Cloudflare para solucionar problemas de tiempo de ejecución 🛡️

Esperamos que este artículo te haya proporcionado todas las claves para dominar las tareas cron y automatizar las tareas de tu sistema de forma eficiente.

Si tienes alguna pregunta, opinión o consejo que compartir, no dudes en dejarlo como comentario. ¡Gracias por leer y hasta pronto para más consejos prácticos! 🙏💬

Valora este artículo :

Este artículo le ha sido útil ?

Article utile

Article non utileNo

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.

Pour toute question non liée à cette documentation ou problème technique sur l'un de vos services, contactez le support commercial ou le support technique

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Artículos similares

0mn lectura

Multidominio - Poner varios dominios en el mismo servicio de alojamiento web

1mn lectura

¿Es posible eliminar la función antispam de RSpamD en el alojamiento compartido?

0mn lectura

¿Cómo puedo ver los correos electrónicos enviados mediante la función de correo PHP y bloqueados por SPAMASSASSIN?


Formule una pregunta al equipo de LWS y a su comunidad