SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

289 Plugins, 197 contribs sur SPIP-Zone, 62 visiteurs en ce moment

Accueil > Affichage multimédia > FACD > FACD

FACD

3 juin 2015 – par kent1 – commentaires

7 votes

FACD est l’acronyme de « File d’Attente de Conversion de Documents ».

Comme son nom l’indique, il permet à des plugins dont le but est de convertir des documents dans d’autres formats de mettre ses conversions dans une file afin qu’elles soient réalisées à intervalle régulier par le CRON de SPIP.

Objectif du plugin

Les conversions de documents (audios, videos, textuels ou images) sont en général des traitements lourds qui peuvent prendre de plusieurs minutes à plusieurs heures à s’exécuter et nécessitent énormément de puissance serveur.

Il est donc nécessaire d’éviter le fait que plusieurs conversions ne s’exécutent en même temps, mais plutôt les unes après les autres.

Fonctionnement du plugin

Le plugin installe une nouvelle table dans la base de données composée de 9 champs différents :

  • id_facd_conversion int : l’identifiant numérique de la conversion ;
  • id_document int : l’identifiant numérique du document à convertir ;
  • id_auteur int : l’identifiant numérique de l’auteur demandant la conversion ;
  • fonction string : le nom de la fonction de conversion (voir le nommage des fonctions de conversions) ;
  • options string : array serialisé des options à passer à la fonction de conversion ;
  • extension string : extension vers laquelle doit être converti notre document ;
  • statut string : statut de la conversion ;
  • infos string ;
  • maj timestamp : date de mise à jour de la conversion ;

Le principe consiste à ce que chaque plugin proposant de convertir un document dans un autre format insère une ligne dans cette table indiquant les différentes informations.

Ensuite, c’est le plugin facd qui lancera la conversion par cron lorsque cela sera possible.

Les statuts de conversion

Un élément de la file d’attente peut avoir 4 statuts différents :

  • non : la conversion est en attente, statut par défaut ;
  • oui : la conversion a été réalisée avec succès ;
  • en_cours : la conversion est en cours ;
  • erreur : la conversion a échoué ;

Nommage des fonctions de conversion

Le plugin accepte plusieurs noms de fonctions de conversion, dans l’ordre :

  • convertir_nom_fonction() qui se situerait dans un fichier convertir/nom_fonction.php de votre plugin ;
  • inc_nom_fonction qui se situerait dans un fichier inc/nom_fonction.php de votre plugin ;
  • convertir_extension_entree_extension_sortie()extension_entree est l’extension de fichier d’entrée et extension_sortie l’extension du fichier de sortie souhaitée. Cette fonction devrait se situer dans le fichier convertir/extension_entree_extension_sortie.php, par exemple une fonction convertir_kml_geojson() dans le fichier convertir/kml_geojson.php qui convertirait des fichiers de type .kml en .geojson ;
  • convertir_extension_entree() dans un fichier convertir/extension_entree.php de votre plugin où extension_entree est l’extension du fichier d’entrée. Par exemple, une fonction convertir_flv() dans un fichier convertir/flv.php qui pourrait convertir les fichiers .flv en .mp4 et .webm ;

La fonction de conversion reçoit deux arguments :

  • $id_document qui est l’identifiant numérique du document à convertir ;
  • $options qui sont les options de conversions ;

L’argument $options est un tableau comprenant :

  • id_facd_conversion, qui est l’identifiant numérique de la conversion dans la table de la base de données de la file d’encodage (inséré automatiquement) ;
  • format, qui est la valeur du champ extension de la table de la file d’encodage (doit être inséré par votre plugin appelant FACD) ;
  • debut_conversion, qui est le timestamp du début de la conversion ;

Il est ensuite complété de la déserialisation du champs options de la table de la file d’encodage qui doit être un tableau serialisé (doit être inséré par votre plugin appelant FACD) ;

Voir le fichier inc/facd_convertir.php du plugin pour plus d’informations.

Retour des fonctions de conversion

Les retours des fonctions de conversions doivent respecter un le formalisme suivant.

Une fonction doit retourner « false » (booléen) ou un tableau (array) de la sorte :

  • success bool true/false ;
  • erreur string : le message d’erreur en cas d’erreurs ;
  • id_document int : l’identifiant du nouveau document si possible ;
  • info array : un array des informations à mettre dans le champ infos en base ;
  • statut string oui|non : le statut à donner à l’identifiant de la file d’encodage par exemple, si on souhaite ne pas le considérer comme fini (oui)

Si votre fonction renvoie bien ce tableau, avec la valeur de success à true, la conversion est considérée comme réussie et son statut passe à oui. Dans le cas contraire, si la valeur success est à false ou si votre fonction ne retourne pas un tableau, la conversion est considérée comme échouée et son statut passe à erreur..

Réussite d’une conversion

Vous pouvez, dans le retour de la fonction de conversion, retourner un tableau infos.

Celui ci sera ajouté au tableau $infos passé en paramètre de la fonction d’encodage, il peut vous servir pour stocker diverses informations sur la conversion pouvant vous être utile par la suite.

Un élément fin_conversion, de type timestamp, est également ajouté à ce tableau. Il correspond au timestamp de la fin de la conversion (debut_conversion et fin_conversion peuvent ensuite être utile à des fins de statistiques par exemple)

Ce tableau est serialisé et inséré dans le champ infos de la conversion.

Échec d’une conversion

Même en cas d’erreur, la valeur de infos sera ajoutée à la précédente ainsi que fin_conversion.

Vous pouvez également ajouter une chaîne erreur qui peut par exemple être le log de retour du binaire servant à convertir votre fichier. Il sera inséré dans le tableau du champ options également.

Insérer une demande de conversion

Pour demander l’ajout de la conversion d’un fichier dans la file d’encodage ces lignes suffisent :

  1. include_spip('action/facd_ajouter_conversion');
  2. facd_ajouter_conversion_file($id_document,'nom_fonction',$extension_sortie,$options,$mode_document);

Télécharger

Lancer une conversion manuellement

Les conversions sont lancées par le CRON à intervalle régulier.

Cependant si vous souhaitez forcer le début d’un conversion, vous pouvez utiliser ce code :

  1. $conversion_directe = charger_fonction('facd_convertir_direct','inc');
  2. $conversion_directe();

Télécharger

La conversion se lancera en asynchrone en utilisant la fonction PHP fsockopen(), elle rendra donc directement la main sans devoir attendre la fin de la conversion qui peut prendre beaucoup de temps (dans le cas d’une vidéo par exemple).

Et visuellement ? Dans l’espace privé

Le plugin ajoute une page ?exec=facd dans l’espace privé du site, accessible depuis le bouton File d'attente de conversion sous le menu Maintenance.

Cette page liste dans un premier bloc les conversions qui ne sont pas encore achevées. Si une ou plusieurs conversions sont en erreur, il sera possible de relancer sa conversion depuis ce bloc.

Dans un second bloc, l’ensemble des conversions achevées sont affichées.

Exemples de plugins utilisant FACD :

Les plugins suivants nécessitent FACD pour leur bon fonctionnement :

Voir en ligne : http://plugins.spip.net/facd

Dernière modification de cette page le 3 janvier 2018

Retour en haut de la page

Vos commentaires

  • Le 27 décembre 2017 à 15:58, par Spidermian En réponse à : FACD

    Bonjour,

    Je suis sous Spip 3.2 svn
    puis-je quand même installer une version de ce plugin ?

    Merci

    • Le 27 décembre 2017 à 16:51, par Maïeul En réponse à : FACD

      Le plugin n’a pas été testé 3.2, mais il est peut être compatible. Il faudrait que tu teste en modifiant dans paquet.xml        compatibilite="[3.0.0;3.1.*]" en        compatibilite="[3.0.0;3.2.*]"

      puis que tu nous signale si cela marche, on fera la modification sur le fichier distribué (mais pas moi car je pars en vacances)

    • Le 29 décembre 2017 à 12:16, par Spidermian En réponse à : FACD

      Apparemment tout fonctionne ;)

    • Le 1er janvier à 13:57, par Maïeul En réponse à : FACD

      Merci. Je viens de mettre à jour sur la zone.

    Répondre à ce message

  • Le 18 août 2017 à 20:05, par philyray En réponse à : FACD

    C’est bon. Merci !

    Au début, ça m’a redis qu’il y avait une erreur au niveau de l’url mais après le téléchargement, FACD 0.4.3 était présent dans la liste des plugins. Il m’a suffit de l’activer.

    Répondre à ce message

  • Le 18 août 2017 à 20:02, par philyray En réponse à : FACD

    Salut,
    J’ai rajouté une capture d’écran en pièce jointe.
    J’utilise escal, 1and1 (1&1 Unlimited Plus), filezilla et j’ai fait ma mise à jour en suivant les consignes de la page : https://contrib.spip.net/Mettre-a-jour-vers-SPIP-3-1-pour-les-nuls#FTP
    Le plugin FACD n’apparait pas dans ma liste de plugins.
    Mon niveau se limite à ça. Je peux faire plus de capture d’écran si nécessaire.

    Répondre à ce message

  • Le 18 août 2017 à 09:05, par Philyray En réponse à : FACD

    J’ai fait une mise à jour majeur de spip 3.0 à spip 3.1 et FACD ne s’installe pas j’ai comme message :

    « Gestion des plugins

    Erreurs survenues
    Impossible d’activer le plugin ../plugins/auto/spipmotion/v1.7.1
    Nécessite le plugin FACD en version ≥ 0.1.0. »

    FACD (En savoir plus) [3.0.0 ;3.0.*] Le plugin actuellement installé est signalé comme incompatible ou à vérifier.

    • Le 18 août 2017 à 14:49, par b_b En réponse à : FACD

      Salut, comme indiqué sur cette page et dans le message d’erreur, FACD n’est pas encore compatible SPIP 3.1.

    • Le 18 août 2017 à 15:04, par kent1 En réponse à : FACD

      La version 0.4.3 devrait l’être, j’ai changé les bornes et en théorie c’est fonctionnel Philyray

      Tu nous ferais un retour positif si c’est le cas ?

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Personnalisation graphique du squelette SoyezCréateurs

    19 août 2009 – 97 commentaires

    Il est possible de personnaliser l’affichage du squelette SoyezCréateurs de manière plus ou moins profonde. Changement dans les couleurs via CFG La page de CFG des couleurs de SoyezCreateurs : ecrire/ ?exec=cfg&cfg=soyezcreateurs_couleurs (...)

  • Agenda 2.0 et ultérieur

    3 novembre 2008 – 1140 commentaires

    Voici la version pour SPIP 2.0 du Plugin Agenda pour SPIP 1.9.2, avec une interface remaniée pour encore plus de plaisir. La lecture de Calendrier Mini 2.0 est également chaudement recommandée, étant donné que Agenda 3 est dépendant de ce (...)

  • Champs Extras 3

    16 janvier 2012 – 634 commentaires

    Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP. Screencast Vous n’aimez pas (...)

  • Éditorial (HTML5UP)

    27 novembre 2017 – 61 commentaires

    Squelette SPIP pour intégrer le modèle Editorial de HTML5UP https://html5up.net/editorial Configuration La page de configuration permet quelques réglages. On y défini la couleur principale du site, des informations de contact et le contenu de la (...)

  • Timeline Me

    18 janvier – 10 commentaires

    TimelineMe - ​http://mickaelr.github.io/jquery-timelineMe/ - est un plugin jquery qui permet d’afficher des informations sur une ligne de temps. Le présent plugin pour SPIP l’utilise et propose un modèle pour afficher les articles d’une rubrique de (...)