¿Cómo puedo evitar que los visitantes del sitio activen las tareas cron?

12

Los registros de mi sitio muestran que cron se activa si alguien visita el sitio web. Esto está ralentizando el tiempo de carga para la primera visita.

El cron está configurado para ejecutarse cada 3 horas aquí: Administración »Configuración» Sistema »Cron .

¿Cómo puedo ejecutar el cron programado y no activado por los visitantes?

ojo de gato
fuente

Respuestas:

9

Debe comenzar leyendo las páginas del manual de Drupal sobre cron para obtener antecedentes y comandos para ejecutar.

  • Si tiene acceso shell / SSH al servidor (Linux), puede ejecutar use run crontab -u www-data -epara editar la tabla cron para el usuario web. Debería poder usar los detalles en el enlace anterior para configurar las ejecuciones cron adecuadas con la frecuencia que desee.
  • Si se encuentra en un alojamiento compartido sin acceso a shell, deberá utilizar el panel de control de su proveedor de alojamiento web (CPanel, Plesk, etc.) para iniciar sesión y agregar una 'Tarea programada'. Esto proporciona una interfaz web para las pestañas cron, por lo que se necesitará la misma configuración.
  • Si estos no están disponibles, deberá pedir ayuda a su empresa de alojamiento, pero también hay servicios gratuitos y de pago que puede usar. Llame a la cron.phppágina de forma remota. Ver Set Cron Job por ejemplo.

Eche un vistazo al módulo Elysia Cron si desea obtener más de cron en general: tiene buena documentación y le permite controlar con precisión qué tareas se ejecutan cuando.

Finalmente, recuerde deshabilitar el sitio que lo ejecuta cuando los visitantes llegan a Administración »Configuración» Sistema »Cron cuando ha logrado configurar esto.

Jim Kirkpatrick
fuente
Tengo acceso a shell. Sé cómo configurar trabajos cron. Entonces lo resolveré. Pero gracias por resumir toda la información.
cateye
Pero lo que no entiendo es por qué Drupal se comporta como lo hace ahora. Si la configuración básica está programada para ejecutar el cron cada 3 horas, ¿por qué espera a un visitante?
cateye
1
Pensar en ello. Por supuesto, para Drupal no hay forma de ejecutar un trabajo cron sin bootstrapping. Y el arranque ocurre cuando un visitante llega al sitio. Entonces, el resumen es: si realmente desea trabajos cron programados, debe configurarlo en el lado del servidor.
cateye
2
Exactamente. No sucede nada en un servidor sin que alguien o algo lo ejecute. El valor predeterminado de Drupal 7 es ejecutar cron cuando los usuarios llegan ocasionalmente para garantizar que se ejecuten las tareas clave. Drupal 6 confió en el módulo Cron de Poor Man para hacer esto en ausencia de un trabajo cron adecuado ... y casi todo en Drupal necesita que el bootstrap ocurra primero. Un trabajo cron adecuado en el servidor es sin duda la mejor opción.
Jim Kirkpatrick
1
La RESPUESTA A CONTINUACIÓN describe cómo solucionarlo. No este :(
Tomáš Fejfar
13

Drupal 7 incorporó en sus módulos el código que estaba en Poormanscron , cuyo propósito es exactamente ejecutar tareas cron de Drupal en un sitio donde no es posible establecer tareas cron, cuando un usuario visita su sitio y cada X horas (como se establece en la página que viste).

Si desea evitar ese comportamiento, solo necesita configurar "Ejecutar cron cada" en "Nunca"; contrario a lo que podría parecer, eso solo influye en lo que sucede cuando los usuarios visitan su sitio. [1] Todavía puede ejecutar tareas cron de Drupal desde fuera de Drupal, recordando que en Drupal 7 se debe invocar cron.php, desde fuera de Drupal, pasando el valor que se muestra en "Administración> Informes> Informe de estado".

 

captura de pantalla

 

 

 

 

 

[1]: De hecho, ni cron.php ni drupal_cron_run () verifican la variable Drupal utilizada en esa página de configuración. Las únicas variables de Drupal utilizadas son:

  • "cron_key" que contiene la clave cron utilizada para evitar que las tareas cron de Drupal se ejecuten desde usuarios no autorizados
  • "mantenimiento_modo" que se establece TRUEcuando el sitio está en modo de mantenimiento
  • "cron_last" que contiene la marca de tiempo de cuándo se ejecutaron las tareas cron la última vez
kiamlaluno
fuente
¡La única dificultad es cuando el trabajo cron expira cada vez que ve la página y ni siquiera puede iniciar sesión como administrador para deshabilitarla! suspiro ... Voy a averiguarlo, pero bueno sé que puede ser desactivado, una vez que realmente entrar allí
Sí, resolví esto rápidamente configurando un monitor de tiempo de actividad Montastic que "verifica" la URL de activación de cron cada 6 horas ...
Anders