2010-11-13 23 views

Respuesta

10

La respuesta aceptada anteriormente es INCORRECTA. El límite de tiempo de Cron en Drupal está codificado a 240 segundos. Véase la función drupal_cron_run en includes/common.inc, específicamente estas líneas:

drupal_set_time_limit(240); 

y

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

(basado en la fuente de Drupal 7.12)

Por lo tanto, no hay manera de cambiar esta situación globalmente sin pirateo de núcleo. He oído que sugirió llamar al drupal_set_time_limit dentro de su implementación hook_cron, al hacerlo se restablece el contador de PHP. Sin embargo, eso no lo ayudará cuando se trata de un módulo de terceros que implementa hook_cron.

+0

En su mayoría, el estado de actualización y el módulo de búsqueda hacen que cron falle. – Serjas

3

El tiempo máximo de ejecución para el cron de Drupal depende de su php.ini.

Por ejemplo, si usa wget -O - -q -t 1 http://www.example.com/cron.php como su comando cron, apache's php.ini se usa para determinar el tiempo máximo de ejecución.

Si usa php -f cron.php como su comando cron, php.ini de php-cli se usa para determinar el tiempo máximo de ejecución.

Se recomienda utilizar php-cli para un mayor tiempo de ejecución, donde puede establecer el tiempo máximo de ejecución desde /etc/php5/cli/php.ini (si usa debian linux) y no tiene efectos secundarios en apache mientras se ejecuta cron.

+2

1, pero una palabra de advertencia cuando se invoca a través de cron CLI: Asegúrese de que ninguno de sus módulos 'hook_cron()' implementaciones se basa en el uso de variables proporcionadas por el servidor web , ya que obviamente no estarán disponibles en ese contexto (pasó bastante tiempo una vez para encontrar que un módulo usaba '$ _SERVER ['ROG._DOCUMENTO ']' en invocaciones cron). –

2

No sé si este es necesariamente el caso, ya que acabo de ejecutar cron.php a través de mi navegador y obtengo un max excution time error de 240 segundos, mientras que mi tiempo máximo de ejecución en mi php.ini es de 1200 segundos. Entonces, en algún lugar, además de mi archivo php.ini, Drupal está tomando el tiempo máximo de ejecución.

Que en algún lugar estaría en el ./includes/common.inc o ./includes/locale.inc. Dirígete hacia allí y hay configuraciones para ajustar cuánto tiempo drupal permitirá ejecutar el cron antes de renunciar a

Cuestiones relacionadas