Ir Atrás

Uso de tareas cron

Consideramos que este mensaje que a veces dan los scripts y aplicaciones para configurar tareas cron: 'contacta con el administrador de tu servidor' es digno de los años 80 :). De hecho, ya sea el panel de administración de cPanel u otro, este tipo de función elemental se ha hecho accesible a los usuarios finales: 'simplemente hazlo', simplemente lee las instrucciones básicas de cPanel y este artículo si es necesario...

Desde tu cPanel, sección Avanzado/Tareas Cron:

Gestión de Cron desde cPanel


Atención:
La ejecución de cron en un intervalo demasiado corto sin necesidad/justificación genera errores y un desbordamiento de recursos que conduce a un mal funcionamiento de su sitio web

Dependiendo de tus necesidades y de las recomendaciones del editor, aquí tienes los 2 formatos A y B como ejemplos:
A. guiones PHP operando en php interno
/usr/bin/php -f /home/suusuariocpanel/public_html/sucarpeta/su-subcarpeta/suarchivo.php >/dev/null 2>&1
o
php -f /home/suusuariocpanel/public_html/sucarpeta/su-subcarpeta/suarchivo.php >/dev/null 2>&1
(La bandera '-f' dice PHP para ejecutar dicho archivo)
(Leer: http://php.net/manual/fr/features.commandline.options.php )

o nuevamente (si tiene un error como acceso prohibido:
/usr/local/bin/php -f /home/suusuariocpanel/public_html/sucarpeta/su-subcarpeta/suarchivo.php >/dev/null 2>&1


B. guiones PHP operando externamente:
wget -q -O /dev/null "http://www.sudominio.es/sucarpeta/su-subcarpeta/suarchivo.php" >/dev/null 2>&1
o
/usr/bin/wget -q -O /dev/null "http://www.sudominio.es/sucarpeta/su-subcarpeta/suarchivo.php" >/dev/null 2>&1
o
curl -s "http://www.sudominio.es/sucarpeta/su-subcarpeta/suarchivo.php" >/dev/null 2>&1

NB:
1. Agregar esto ayuda a ordenar el servidor para que no ejecute todos los cron en el mismo segundo (ssh debe activarse según el caso):
sleep $(expr $RANDOM \% 35);
Ejemplo de integración, puesto al inicio del cron:
sleep $(expr $RANDOM \% 35); /usr/bin/wget -q -O /dev/null "http://www.sudominio.es/sucarpeta/su-subcarpeta/suarchivo.php" >/dev/null 2>&1
2. Evite configurar crons con minutos en el valor 0 y, sobre todo, diluya los minutos entre sus crons para evitar un conflicto de aplicación local
3. Para crones wget, la adición de  -q -O /dev/null le permite evitar escribir un archivo en su cuenta cada vez que se ejecuta el cron
4. Agregar >/dev/null 2>&1 le permite detener los correos electrónicos enviados en cada ejecución


Scripts específicos y SHELL si los crons tradicionales no funcionan

A. cron con script sh
sh /home/suusuariocpanel/public_html/sucarpeta/su-subcarpeta/suarchivo.sh

B. Especificidad de ciertos scripts cron que involucran comandos shell y/o shell_exec, estamos en un entorno virtualizado con aislamiento de cuenta del sistema CageFS. Debes insertar esto en tu crontab usando el shell :

MAILTO="user@sucorreo.com"
SHELL="/usr/local/cpanel/bin/jailshell"
PATH="/usr/local/bin/:/usr/bin:/bin"

Luego simplemente agregue su cron a través de cPanel, ejemplo:
* * * * * php -f /home/suusuariocpanel/sudominio.com/cron.php >/dev/null 2>&1

NB: si es necesario, verifique y adapte cuidadosamente la configuración php.ini de forma predeterminada en su cPanel, consulte: enable_functions, lea el documento de su CMS/módulo o comuníquese con el editor

Atención:
La opción -f puede no ser adecuada para ciertos scripts, como cuando se optimiza WordPress deshabilitando wp-cron.php en WordPress...

Deshabilite wp-cron en WordPress agregando esto en wp-config.php :
define('DISABLE_WP_CRON', true);

luego agregando el cron en cPanel (se recomienda ejecutar cada 10 minutos como mínimo, y reemplazar con su dominio):
/usr/bin/wget -q -O /dev/null "https://www.susitioweb.es/wp-cron.php?doing_wp_cron"