Posted by oskar_calvo on September 26, 2011 at 11:56am
Problemas ejecutando un código de batch api. Me hace dos cosas raras, me da un timeout, por un lado, y acceso denegado para el usuario anónimo cuando intenta ejecutar el proceso.
El código es:
<?php
/<strong>
*
* Implementation hook menu
*
*/
function pruebas_menu(){
$items = array();
$items['pruebas/batch'] = array(
'title' => 'pruebas batch',
'description' => 'prubas batch api',
'page callback' => 'pruebas_de_batchs',
'access callback' => TRUE,
'file' => 'pruebas.module',
'type' => MENU_CALLBACK,
);
return $items;
}
/</strong>
* Implementation hook cron
*/
function pruebas_cron(){
//primero ejecutamos el cálculo de tiempo total, para guardarlo en una variable.
pruebas_de_batchs();
}
/***
*
*
* función pruebas_de_batchs
*
*/
function pruebas_de_batchs(){
//llamamos a la función de batch
batch_set(_cargar_usuarios());
//We're not inside a form submission workflow, so we have to manually
// trigger the batch processing - this issues a drupal_goto and thus ends
// current request.
// We also specify here where we want to redirect after batch processing.
batch_process('home');
}
/***
* cargar usuarios
*/
function _cargar_usuarios(){
//calculamos la fecha.
$date = date('Y-m-d',strtotime('yesterday'));
//montamos array de valores de fechas.
$valoresfechas = _get_valores_fechas($date);
$usuarios = array();
//se ejecuta correctamente. se ha comprobado.
$usuarios = _crear_array_usuarios_tiempos( $valoresfechas);
$operations = array();
foreach($usuarios as $uid => $usuario){
$operations[] = array('cambiar_nombre', array($uid, $usuario, $valoresfechas));
}
$batch = array(
'operations' => $operations,
'finished' => 'funcion_final',
'title' => t('Calculando tiempo de usuarios'),
'init_message' => t('Comienza el cálculo de tiempos.'),
);
return $batch;
}
?>Si el proceso no recoge ese día usuarios para actualizar, parece que me da un error de time out.
Por otro lado me da un error de acceso denegado para la ejecución del proceso de batch api.
access denied
Fecha Lunes, Septiembre 26, 2011 - 13:50
Usuario (no verificado)
Ubicación http://www.domain.com/batch?op=start&id=90
Comments
Ya he encontrado la
Ya he encontrado la respuesta.
Parece que no se puede ejecutar cron y batch api de forma conjunta.
http://drupal.org/node/988192
La única opción parece que es envolver a traves de "drupal_queue module" el batchapi para que sea ejecutado por cron LOL.
http://drupal.org/node/988192#comment-3847954
http://svendecabooter.be/blog/performing-batch-data-operations-on-cron-r...
en fins.
Oskar