{"id":12256,"date":"2018-10-23T01:00:08","date_gmt":"2018-10-22T23:00:08","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=12256"},"modified":"2020-12-10T09:50:29","modified_gmt":"2020-12-10T08:50:29","slug":"cpanel-cron-job","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/cpanel-cron-job\/","title":{"rendered":"M\u00e9todos para Cron Job en Cpanel"},"content":{"rendered":"
<\/p>\n
La mejor forma de ejecutar una cron job en cpanel suele ser directamente con PHP<\/strong>. Normalmente con el comando php<\/strong><\/em> invocamos un archivo .php<\/em> que ejecuta la tarea cron<\/strong>. <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Se puede hacer que cron env\u00ede un correo electr\u00f3nico cada vez que ejecute un comando. Si no desea que se env\u00ede un correo electr\u00f3nico para un trabajo de cron individual, puede redirigir la salida del comando a \/dev\/null de la siguiente forma: <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n o simplemente (ruta relativa):<\/p>\n CRON con PHP: <\/p>\n <\/p>\n <\/p>\n <\/p>\n \u2013> EST\u00c1 FUNCIONANDO OK <\/p>\n <\/p>\n <\/p>\n <\/p>\n RESULTADO RECIBIDO POR CORREO:<\/span><\/p>\n <\/p>\n En hosting compartido puede ocurrir que El l\u00edmite de generaci\u00f3n de datos es de 5\u00a0MB\u00a0(stdin\/stderr):<\/p>\n <\/p>\n <\/p>\n <\/p>\n https:\/\/support.cloudflare.com\/hc\/es-es\/articles\/200169626<\/a><\/p>\n <\/p>\n ejemplo: <\/p>\n <\/p>\n <\/p>\n <\/p>\n El resumen ser\u00eda que es mejor ejecutar las CRON Jobs desde PHP<\/strong>, ya que as\u00ed se evita una capa m\u00e1s en el proceso; al ejecutarlo desde PHP, se ejecuta directamente desde el servidor sin pasar por la capa web<\/strong>; es decir, si lo ejecutamos con wget<\/strong> o curl<\/strong>, primero se har\u00eda una petici\u00f3n hacia la capa web y despu\u00e9s se ejecutar\u00eda el php<\/strong>. <\/p>\n\n Hoy vamos a ver varios m\u00e9todos para ejecutar las tareas Cron en Cpanel, con nuestro hosting.<\/p>\n","protected":false},"author":1,"featured_media":20395,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false},"categories":[1271],"tags":[1111,1027,366],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/12256"}],"collection":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/comments?post=12256"}],"version-history":[{"count":3,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/12256\/revisions"}],"predecessor-version":[{"id":30542,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/12256\/revisions\/30542"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/media\/20395"}],"wp:attachment":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/media?parent=12256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/categories?post=12256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/tags?post=12256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
\n <\/><\/br>
\nAunque existen otras formas de lograr la ejecuci\u00f3n de trabajos Cron<\/a>.<\/p>\n
\nEn este art\u00edculo:
\n <\/p>\n\n
\n
\n
1. INTRODUCCI\u00d3N<\/span><\/h3>\n
\nLos CRON Jobs<\/a><\/strong> son trabajos programados que podemos crear desde nuestro cpanel que controla el host que aloja nuestra web. En el caso de los sitios WordPress<\/a>, se suele invocar al archivo wp-cron.php<\/em>.
\n <\/br><\/br>
\nCada hosting es diferente y puede que alguno de los m\u00e9todos aqu\u00ed mencionados no funcione o funcionen mejor unos que otros.
\nTambi\u00e9n tenemos que tener en cuenta la ruta y la forma de utilizar los comandos.
\n <\/br><\/br>
\nCuando usemos PHP<\/strong>, es posible que delante de todo debamos utilizar la ruta completa:<\/p>\n\/usr\/local\/bin\/php<\/pre>\n
\no que simplemente usemos la ruta relativa utilizando ya el comando en cuesti\u00f3n, por ejemplo <\/p>\nphp \/home\/miusuario\/public_html\/wp-cron.php<\/pre>\n
Vamos a ver un ejemplo de cada, y el resultado que obtenemos en cada caso (nos llegar\u00e1 al email configurado en nuestro panel de hosting para las CRON<\/a>)<\/h4>\n
1.1 ** SI USAMOS CLOUDFARE<\/a> **<\/span><\/h4>\n
\nTambi\u00e9n hay algunos casos en los que usamos cloudfare.
\n
\nEn algunos casos el cron con curl no funciona correctamente cuando utilizamos Cloudfare. Info Aqu\u00ed<\/a>.
\n <\/p>\n2. Tenemos tres m\u00e9todos principales para ejecutar las tareas Cron<\/span><\/h3>\n
\n
mycommand >\/dev\/null 2>&1<\/pre>\n
\nEn este caso, vamos a hacer que Cron nos env\u00ede un mail cada vez que ejecute la tarea programada, as\u00ed podremos comprobar que funciona.
\n
\n
\n <\/p>\n2.1 – CREAMOS NUEVO TRABAJO CRON<\/strong> EN CPANEL<\/a><\/span><\/h4>\n
\nPrimero entraremos en nuestro CPANEL y crearemos las respectivas tareas CRON. En la siguiente imagen vemos la creaci\u00f3n de una tarea CROn con PHP:<\/p>\n2.a – Cron con PHP<\/span><\/h3>\n
\nCron con\u00a0\/usr\/local\/bin\/php (ruta absoluta):
\n <\/p>\n\/usr\/local\/bin\/php \/home\/miusuario\/public_html\/wp-cron.php<\/pre>\n
\n<\/p>\nphp \/home\/miusuario\/public_html\/directorio\/wp-cron.php<\/pre>\n
Mensaje recibido en email, tras la ejecuci\u00f3n de la Cron con PHP<\/strong>:<\/span><\/h4>\n
Content-type: text\/html; charset=UTF-8<\/pre>\n
\n <\/p>\n2.b – Cron con WGET<\/strong><\/span><\/h3>\n
wget -O - -t 1 http:\/\/midominio\/wp-cron.php<\/pre>\n
\n
\n <\/p>\n\r\n--2018-10-12 18:16:01--\u00a0\u00a0http:\/\/midominio\/test.php\r\nResolviendo midominio\u00a0(midominio)... ***.***.***.***\r\nConectando con midominio\u00a0(midominio)[***.***.***.***]:80... conectado.\r\nPetici\u00f3n HTTP enviada, esperando respuesta... 200 OK\r\nLongitud: 0 [text\/html]\r\nGrabando a: \u201ctest.php.1\u201d\r\n0K\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0,00 =0s\r\n\r\n2018-10-12 18:16:02 (0,00 B\/s) - \u201ctest.php.1\u201d guardado [0\/0]\r\n<\/pre>\n
\r\nGrabando a: \u201cSTDOUT\u201d\r\n0K\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 0,00 =0s\r\n\r\n2018-10-03 21:59:03 (0,00 B\/s) - escritos a stdout [0\/0]\r\n<\/pre>\n
\n
\n <\/p>\n2.c – Cron con CURL<\/strong><\/span><\/h3>\n
\nCreamos la tarea Cron:<\/p>\ncurl http:\/\/midominio\/wp-cron.php<\/pre>\n
\n <\/p>\nResultado\u00a0recibido\u00a0por\u00a0mail tras cron con curl:<\/h4>\n
\r\n% 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\r\n<\/pre>\n
\nA diferencia del primer m\u00e9todo (php), los trabajos cron basados en\u00a0curl<\/em>\u00a0funcionar\u00e1n 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\u00e1n en funcionamiento.
\n <\/p>\nPOSIBLES BLOQUEOS DE CRON EN CLOUDFARE CUANDO USAMOS CURL:<\/span><\/h4>\n
\nDesde Cloudfare podemos encontrar info al respecto de posibles bloqueos cuando ejecutamos CRON. <\/p>\ncurl http:\/\/midominio\/wp-cron.php<\/pre>\n
\nCloudfare parece bloquear en algunas ocasiones las peticiones con curl y wget hacia archivos php ..
\nNos recomiendan crear un subdominio que no est\u00e9 cacheado en Cloudfare, y desde \u00e9l ejecutar las tareas Cron.
\n <\/p>\n3. CONCLUSIONES<\/span><\/h3>\n
\n <\/br><\/br>
\nEn res\u00famen: PHP mejor y es la opci\u00f3n m\u00e1s simple. Curl<\/a><\/strong><\/em> y WGET<\/strong><\/em> acceden por HTTP y puede haber errores de bloqueos (entre ellos errores con CLOUDFARE).(m\u00e1s directo y menos posibilidad de errores y bloqueos con PHP).<\/p>\n