Job queue | Develop Site
Este módulo es utilizado por los módulos a las llamadas a la función de la cola para su ejecución en cron. La función job_queue_add() es usada por otros modulos para mantener trabajos a realizar en espera:
<?php
/**
* Add a job to the queue. The function added will be called in the order it
* was added during cron.
*
* @param $function
* The function name to call.
* @param $description
* A human-readable description of the queued job.
* @param $arguments
* Optional array of arguments to pass to the function.
* @param $file
* Optional file path which needs to be included for $fucntion.
* @param $no_duplicate
* If TRUE, do not add the job to the queue if one with the same function and
* arguments already exists.
*/
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE) {
?>
Ejemplo
Normalmente, para enviar correo electrónico desde Drupal se utiliza la función drupal_mail. Si es necesario enviar muchos correos electronicos al mismo tiempo el proceso puede producir tiempos de espera en PHP (time out). Por eso es posible utilizar la función job_queue_add () para mantener en cola de espera los correos que, eventualmente, pueden ser enviado ejecutando CRON donde el modulo job_queue termina de ejecutar el trabajo pendiente.
<?php
drupal_mail('some-email-id', $to, $subject, $body, $from, $headers);
?>
se convierte en
<?php
job_queue_add('drupal_mail', 'Description of the email process', array('some-email-id', $to, $subject, $body, $from, $headers), '', TRUE);
?>
El primer argumento es el nombre de la función que es ejecutada, lo siguiente es una descripción del trabajo a realizar, y el resto es el conjunto de argumentos que se habrían ejecutado con la función original. Los dos últimos argumentos son opcionales, el argumento TRUE es para garantizar que los correos electrónicos duplicados no se procesen en cola.
Los trabajos realizados en cola se listan en http://example.com/admin/reports/job_queue.
Cuando se ejecuta el cron, se proces lo que hay pendiente en la cola. Para evitar los tiempos de espera de PHP, los trabajos se realizan en la mitad del tiempo maximo de ejecución de PHP.
Establecimiento de prioridades
Los módulos se pueden permitir que los trabajos se priorizan según su función. El gancho hook_job_queue_functions () define las funciones de dar prioridad a:
<?php
function mymodule_job_queue_functions() {
$functions['drupal_mail'] = array(
'title' => t('Drupal mail'),
);
return $functions;
}
?>