source: spip-zone/_plugins_/facd/action/facd_traiter_conversion.php @ 66922

Last change on this file since 66922 was 66922, checked in by kent1@…, 9 years ago

Grosses simplifications et améliorations sur la liste par date.

On fait un fusion {fusion DATE_FORMAT(maj, '%Y%m%d')} pour récupérer la liste de jours et une boucle à l'intérieur. On ne gère donc plus d'array sur l'ensemble des conversions, cela réduit énormément le temps de chargement quand on a beaucoup d'éléments dans la table (testé avec plus de 20000 conversions)

Petites améliorations de code sur la fonction de lancement de conversion

On met le champ #MAJ dans table_date pour servir de date au cas où

On passe en 0.2.0 et en stable

File size: 2.4 KB
Line 
1<?php
2/**
3 * Action qui lance une conversion
4 *
5 * @plugin FACD pour SPIP
6 * @author b_b
7 * @author kent1 (http://www.kent1.info - kent1@arscenic.info)
8 * @license GPL
9 */
10
11if (!defined('_ECRIRE_INC_VERSION')) return;
12
13/**
14 * Fonction de lancement de conversion
15 * Il est préférable de l'appeler via le Cron pour éviter de bloquer le processus de l'utilisateur
16 *
17 * Consulte la file d'attente pour savoir si des documents sont à convertir.
18 *
19 * S'il existe au moins un document à convertir on lance le premier
20 * Si ce document original n'existe plus, on supprime ses occurences dans la file d'attente
21 * et on relance la même fonction
22 *
23 */
24function action_facd_traiter_conversion_dist(){
25        $nb_conversions = sql_countsel('spip_facd_conversions', "statut='non'");
26        spip_log("Appel de la fonction de conversion : il y a $nb_conversions document(s) à convertir","facd");
27        $en_cours = sql_fetsel('id_facd_conversion,maj','spip_facd_conversions',"statut='en_cours'");
28       
29        /**
30         * On essaie de voir s'il y a d'autres conversions en cours
31         */
32        if(($nb_conversions > 0) && !intval($en_cours['id_facd_conversion'])){
33                $doc_attente = sql_fetsel("*","spip_facd_conversions","statut='non'","","id_facd_conversion ASC","1");
34                /**
35                 * Vérification de l'exisence du document
36                 */
37                $id_document = sql_getfetsel('id_document','spip_documents','id_document='.intval($doc_attente['id_document']));
38                if(intval($id_document) > 0){
39                        spip_log("on convertit le doc $id_document","facd");
40                        $convertir = charger_fonction('facd_convertir','inc');
41                        $retour = $convertir($id_document,$doc_attente['id_facd_conversion'],$doc_attente['extension']);
42                }else{
43                        sql_delete('spip_facd_conversions','id_document='.sql_quote($doc_attente['id_document']));
44                }
45        }else if(intval($en_cours['id_facd_conversion']) && ($en_cours['maj'] < date('Y-m-d H:i:s',mktime(date('H')-5)))){
46                spip_log("L'id". $en_cours['id_facd_conversion']." de la file d'attente est en cours de conversion depuis plus de 5 h (".$en_cours['maj']."), on le réinitialise, cela doit être une erreur","facd");
47                sql_updateq('spip_facd_conversions',array('statut' => 'non'),'id_facd_conversion ='.intval($en_cours['id_facd_conversion']));
48        }else if(intval($en_cours['id_facd_conversion'])){
49                spip_log("L'id ". $en_cours['id_facd_conversion']." de la file d'attente est en cours de conversion","facd");
50                spip_log("On attend sa fin avant d'en commencer un nouveau","facd");
51        }
52        return;
53}
Note: See TracBrowser for help on using the repository browser.