Skip to content
Extraits de code Groupes Projets
Valider 8583e134 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Intégration d'une gestion de files de taches (initialement le plugin...

Intégration d'une gestion de files de taches (initialement le plugin job_queue) en remplacement du système de cron periodique
La declaration de taches periodiques reste identique a auparavant (pipeline taches_generales_cron)

La balise #SPIP_CRON disparait, remplacee par un declenchement en fin de hit uniquement quand une tache
est en attente. Pour le declenchement, on utilise preferentiellement un socket, et a defaut une image background comme avant.

Lors d'un appel, le sequenceur execute autant de taches en attente que possible, dans la limite d'un temps donné. Des appels concurents peuvent se jouer, mais chaque tache est executee une unique fois par une seule instance. L'unicité de l'execution est garantie par un sql_delete.

SI jamais le nombre de taches en attente depasse un seuil (10000 par defaut) la file est purgee par un appel en fin de hit, synchrone.
Une page d'aministration est accesible aux administrateurs depuis le menu maintenance.

L'API est 
/**
 * Ajout d'une tache dans la file d'attente
 *
 * @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.
 * @param $time
 *		time for starting the job. If 0, job will start as soon as possible
 * @param $priority
 *		-10 (low priority) to +10 (high priority), 0 is the default
 * @return int
 *	id of job
 */
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE, $time=0, $priority=0)

/**
 * Supprimer une tache de la file d'attente
 * @param int $id_job
 *  id of jonb to delete
 * @return bool
 */
function job_queue_remove($id_job)

/**
 * Associer une tache a un/des objets de SPIP
 * @param int $id_job
 *	id of job to link
 * @param array $objets
 *  can be a simple array('objet'=>'article','id_objet'=>23)
 *  or an array of simple array to link multiples objet in one time
 */
function job_queue_link($id_job,$objets)
parent 08f1d5a9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 978 ajouts et 111 suppressions
Chargement en cours
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter