web-dev-qa-db-fra.com

Comment puis-je empêcher les tâches cron d'être déclenchées par les visiteurs du site?

Les journaux de mon site montrent que cron est déclenché si quelqu'un visite le site Web. Cela ralentit le temps de chargement pour la première visite.

Le cron est configuré pour fonctionner toutes les 3 heures ici: Administration "Configuration" Système "Cron.

Comment puis-je exécuter le cron planifié et non déclenché par les visiteurs?

12
cateye

Vous devriez commencer par lire les pages du manuel Drupal sur cron pour obtenir le fond et les commandes à exécuter.

  • Si vous disposez d'un accès Shell/SSH au serveur (Linux), vous pouvez exécuter use run crontab -u www-data -e pour éditer la table cron pour l'internaute. Vous devriez pouvoir utiliser les détails du lien ci-dessus pour configurer des exécutions de cron appropriées aussi souvent que vous le souhaitez.
  • Si vous êtes sur un hébergement partagé sans accès à Shell, vous devrez utiliser le panneau de contrôle de votre hôte Web (CPanel, Plesk, etc.) pour vous connecter et ajouter une `` tâche planifiée ''. Cela fournit une interface Web aux onglets cron, donc les mêmes paramètres seront nécessaires.
  • Si ceux-ci ne sont pas disponibles, vous devrez demander à votre hébergeur de vous aider, mais il existe également des services gratuits et payants que vous pouvez utiliser appelez le cron.php page à distance pour vous. Voir Set Cron Job par exemple.

Jetez un oeil au module Elysia Cron si vous voulez plus de cron en général - il a une bonne documentation et vous permet de contrôler finement les tâches qui s'exécutent quand.

Enfin, n'oubliez pas de désactiver le site qui l'exécute lorsque les visiteurs arrivent à Administration "Configuration" Système "Cron lorsque vous avez réussi à le configurer.

9
Jim Kirkpatrick

Drupal 7 a incorporé dans ses modules le code qui se trouvait dans Poormanscron , dont le but est exactement d'exécuter Drupal tâches cron sur un site où il n'est pas possible de définir des tâches cron , lorsqu'un utilisateur visite votre site et toutes les X heures (comme indiqué dans la page que vous avez vue).

Si vous voulez éviter ce comportement, il vous suffit de définir "Run cron every" sur "Never"; contrairement à ce qu'il pourrait paraître, cela influence simplement ce qui se passe lorsque les utilisateurs visitent votre site.[1] Vous pouvez toujours exécuter Drupal tâches cron depuis l'extérieur de Drupal, en vous rappelant que dans Drupal 7 cron.php doit être appelé, depuis l'extérieur de Drupal, en passant la valeur indiquée) dans "Administration> Rapports> Rapport d'état".

screenshot

[1]: En fait, ni cron.php , ni drupal_cron_run () vérifie la Drupal variable utilisée dans cette page de paramètres. Les seules variables Drupal utilisées) sont:

  • "cron_key" qui contient la clé cron utilisée pour éviter les tâches Drupal cron sont exécutées par des utilisateurs non autorisés
  • "mode_entretien" défini sur TRUE lorsque le site est en mode maintenance
  • "cron_last" qui contient l'horodatage de la dernière exécution des tâches cron
13
kiamlaluno