Hoy vamos a ver varios métodos para ejecutar las tareas Cron en Cpanel, con nuestro hosting.


 
La mejor forma de ejecutar una tarea cron suele ser directamente con PHP. Normalmente con el comando php invocamos un archivo .php que ejecuta la tarea cron.  
Aunque existen otras formas de lograr la ejecución de tareas Cron.

 

 

 
En este artículo:
 


 

 

1. INTRODUCCIÓN

 

Las tareas CRON son tareas programadas que podemos crear desde nuestro cpanel que controla el host que aloja nuestra web. En el caso de los sitios WordPress, se suele invocar al archivo wp-cron.php.  

Cada hosting es diferente y puede que alguno de los métodos aquí mencionados no funcione o funcionen mejor unos que otros. También tenemos que tener en cuenta la ruta y la forma de utilizar los comandos.  

Cuando usemos PHP, es posible que delante de todo debamos utilizar la ruta completa:

 
 
1
/usr/local/bin/php

  o que simplemente usemos la ruta relativa utilizando ya el comando en cuestión, por ejemplo

1
php /home/miusuario/public_html/wp-cron.php

 

 

Vamos a ver un ejemplo de cada, y el resultado que obtenemos en cada caso (nos llegará al email configurado en nuestro panel de hosting para las CRON)


 

1.1 ** SI USAMOS CLOUDFARE **

 
También hay algunos casos en los que usamos cloudfare.
 
En algunos casos el cron con curl no funciona correctamente cuando utilizamos Cloudfare. Info Aquí.
 

 

2. Tenemos tres métodos principales para ejecutar las tareas Cron

 

  • a) cron con PHP
  • b) cron con WGET
  • c) cron con CURL

Se puede hacer que cron envíe un correo electrónico cada vez que ejecute un comando. Si no desea que se envíe un correo electrónico para un trabajo de cron individual, puede redirigir la salida del comando a /dev/null de la siguiente forma:

1
mycommand >/dev/null 2>&1

 
En este caso, vamos a hacer que Cron nos envíe un mail cada vez que ejecute la tarea programada, así podremos comprobar que funciona.
 

 

2.1 – CREAMOS NUEVO TRABAJO CRON EN CPANEL

 
Primero entraremos en nuestro CPANEL y crearemos las respectivas tareas CRON. En la siguiente imagen vemos la creación de una tarea CROn con PHP:

   

 

 

2.a – Cron con PHP

 
Cron con /usr/local/bin/php (ruta absoluta):
 

1
/usr/local/bin/php /home/halconeros/public_html/wp-cron.php

 

 

o simplemente (ruta relativa):

CRON con PHP:

1
php /home/miusuario/public_html/directorio/wp-cron.php

 

 

Mensaje recibido en email, tras la ejecución de la Cron con PHP:

 

1
Content-type: text/html; charset=UTF-8

–> ESTÁ FUNCIONANDO OK

 

2.b – Cron con WGET

 

1
wget -O - -t 1 http://midominio.com/wp-cron.php

 

 

RESULTADO RECIBIDO POR CORREO:

 

 

1
2
3
4
5
6
7
8
9
--2018-10-12 18:16:01--  http://midominio.com/test.php
Resolviendo midominio.com (midominio.com)... xxx.xxx.xxx.xxx
Conectando con midominio.com (midominio.com)[xxx.xxx.xxx.xxx]:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 0 [text/html]
Grabando a: “test.php.1”
0K                                                        0,00 =0s
 
2018-10-12 18:16:02 (0,00 B/s) - “test.php.1” guardado [0/0]

 

En hosting compartido puede ocurrir que El límite de generación de datos es de 5 MB (stdin/stderr):

1
2
3
4
Grabando a: “STDOUT”
0K                                                        0,00 =0s
 
2018-10-03 21:59:03 (0,00 B/s) - escritos a stdout [0/0]

 

 

2.c – Cron con CURL

 
Creamos la tarea Cron:

1
curl http://midominio.com/wp-cron.php

 


 

Resultado recibido por mail tras cron con curl:

 

1
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0

 
A diferencia del primer método (php), los trabajos cron basados en curl funcionarán solamente si las direcciones URL especificadas en las solicitudes curl son resueltas. Por ejemplo: si los registros DNS para el dominio son correctos y están en funcionamiento.
 

 

POSIBLES BLOQUEOS DE CRON EN CLOUDFARE CUANDO USAMOS CURL:

 
Desde Cloudfare podemos encontrar info al respecto de posibles bloqueos cuando ejecutamos CRON.

https://support.cloudflare.com/hc/en-us/articles/200169596-I-can-t-run-a-cron-job-What-should-I-do-

 

ejemplo:

1
curl http://midominio.com/wp-cron.php

 
Cloudfare parece bloquear en algunas ocasiones las peticiones con curl y wget hacia archivos php ..
Nos recomiendan crear un subdominio que no esté cacheado en Cloudfare, y desde él ejecutar las tareas Cron.
 

 

 

3. CONCLUSIONES

 

El resumen sería que es mejor ejecutar las tareas CRON desde PHP, ya que así se evita una capa más en el proceso; al ejecutarlo desde PHP, se ejecuta directamente desde el servidor sin pasar por la capa web; es decir, si lo ejecutamos con wget o curl, primero se haría una petición hacia la capa web y después se ejecutaría el php.  

En resúmen: PHP mejor y es la opción más simple. Curl y WGET acceden por HTTP y puede haber errores de bloqueos (entre ellos errores con CLOUDFARE).(más directo y menos posibilidad de errores y bloqueos con PHP).

 


Etiquetas del articulo: , ,