2010-11-13 11 views

risposta

10

La risposta accettata sopra è ERRATA. Il limite di tempo di Cron in Drupal è hardcoded a 240 secondi. Vedere la funzione drupal_cron_run in includes/common.inc, in particolare queste linee:

drupal_set_time_limit(240); 

e

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

(basato sulla sorgente di Drupal 7,12)

Quindi, non v'è alcun modo per modificare questo globale senza nucleo di hacking. Ho sentito suggerire di chiamare lo drupal_set_time_limit all'interno dell'implementazione hook_cron, in questo modo si ripristina il contatore di PHP. Tuttavia questo non ti aiuterà quando si tratta di un modulo di terze parti che implementa hook_cron.

+0

La maggior parte dello stato di aggiornamento e del modulo di ricerca causa l'errore di cron. – Serjas

3

Il tempo di esecuzione massimo per cron di Drupal dipende dal tuo php.ini.

Ad esempio se si utilizza wget -O - -q -t 1 http://www.example.com/cron.php come comando cron, php.ini di apache viene utilizzato per determinare il tempo di esecuzione massimo.

Se si utilizza php -f cron.php come comando cron, php-cli's php.ini viene utilizzato per determinare il tempo massimo di esecuzione.

Si consiglia di utilizzare php-cli per tempi di esecuzione più elevati, in cui è possibile impostare il tempo massimo di esecuzione da /etc/php5/cli/php.ini (se si utilizza debian linux) e non hanno effetti collaterali su apache mentre cron viene eseguito.

+2

+1, ma una parola di avvertimento quando si richiama cron tramite CLI: Assicurarsi che nessuno dei vostri moduli 'hook_cron()' implementazioni si basa sull'utilizzo di variabili fornite dal server web , poiché ovviamente non saranno disponibili in quel contesto (trascorse un bel po 'di tempo una volta per scoprire che un modulo usava '$ _SERVER [' DOCUMENT_ROOT ']' sulle invocazioni di cron). –

2

Non so se questo è necessariamente il caso in quanto ho appena eseguito il cron.php attraverso il mio browser e sto ottenendo un max excution time error di 240 secondi mentre il mio tempo massimo di esecuzione nel mio php.ini è di 1200 secondi. Quindi, da qualche parte oltre al mio file php.ini, Drupal sta acquisendo il massimo tempo di esecuzione.

Che da qualche parte sarebbe nel ./includes/common.inc o ./includes/locale.inc. Andate lì e ci sono le impostazioni per regolare la durata della drupal che consentirà a cron di funzionare prima di abbandonare