2010-11-13 16 views

Répondre

10

La réponse acceptée ci-dessus est INCORRECTE. La limite de temps de Cron dans Drupal est codée en dur à 240 secondes. Voir la fonction drupal_cron_run dans includes/common.inc, en particulier ces lignes:

drupal_set_time_limit(240); 

et

if (!lock_acquire('cron', 240.0)) { 

(en fonction de la source de Drupal 7.12)

Donc, il n'y a pas moyen de changer cela à l'échelle mondiale sans noyau de piratage. Je l'ai entendu suggéré d'appeler drupal_set_time_limit vous-même à l'intérieur de votre mise en œuvre hook_cron, ce qui réinitialise le compteur de PHP. Cependant cela ne vous aidera pas quand il s'agit d'un module tiers implémentant hook_cron.

+0

La plupart du temps l'état de mise à jour et le module de recherche provoquent l'échec de cron. – Serjas

3

La durée maximale d'exécution du cron de Drupal dépend de votre php.ini. Par exemple si vous utilisez wget -O - -q -t 1 http://www.example.com/cron.php comme commande cron, le fichier php.ini d'apache est utilisé pour déterminer la durée d'exécution maximale. Par exemple, si vous utilisez wget -O - -q -t 1 http://www.example.com/cron.php comme commande cron.

Si vous utilisez php -f cron.php comme commande cron, php.ini de php-cli est utilisé pour déterminer la durée d'exécution maximale. Il est recommandé d'utiliser php-cli pour une durée d'exécution supérieure, où vous pouvez définir le temps d'exécution maximum de /etc/php5/cli/php.ini (si vous utilisez Linux debian) et n'avoir aucun effet secondaire sur apache pendant l'exécution de cron.

+2

+1, mais un mot d'avertissement lors de l'appel Cron via cli: Assurez-vous qu'aucun de vos modules 'hook_cron()' mises en œuvre repose sur l'utilisation de variables fournies par le serveur Web , puisqu'ils ne seront évidemment pas disponibles dans ce contexte (passé un certain temps une fois à trouver qu'un module utilisait '$ _SERVER ['DOCUMENT_ROOT']' sur les invocations cron). –

2

Je ne sais pas si cela est nécessairement le cas comme je l'ai couru juste le cron.php dans mon navigateur et je reçois un max excution time error de 240 secondes alors que mon temps d'exécution maximum dans mon php.ini est de 1200 secondes. Donc, quelque part à part mon fichier php.ini, Drupal saisit le temps d'exécution maximum.

Quelque part serait dans le ./includes/common.inc ou ./includes/locale.inc. Dirigez-vous là-bas et il y a des paramètres pour ajuster combien de temps drupal permettra au cron de courir avant d'abandonner