L’aventure Kimsufi – intermède 15 – Amélioration des performances owncloud

Owncloud, c’est génial, mais ça reste une application PHP. Comme les autres applications php, elle n’est active que lorsqu’une page est demandée, elle ne tourne pas en arrière plan.

Les développeurs utilisent donc un biais pour pallier ce problème en appelant systématiquement une fonction qui exécutera tout ou partie des taches de fond en attente à chaque chargement de page. C’est bêtement efficace et a l’avantage de fonctionner même chez le plus petit hébergeur qui ne te donne accès qu’en FTP. Cependant ça ralenti énormément le temps de chargement et donne une impression de latence à ton application.

De plus, comme les tâches ne sont réalisées que lorsqu’une page est appelée, tu risques de constater des délais par exemple sur les notifications, les digest, qui sont censés partir à heure fixe, mais ne partiront que lorsque la page web aura été interrogée.

La solution pour pallier ce problème est relativement simple. Il en existe même deux, suivant la façon dont a été codé l’application : soit rien n’a été prévu par les hauteurs et on va tâcher à intervalle régulier (par exemple toutes les 5 minutes) d’appeler une page web avec un automate de type CRON (http://fr.wikipedia.org/wiki/Cron). Ou bien les concepteurs de l’application ont prévu le coup et on demandera à ce même automate de nous exécuter toutes les actions asynchrones d’un coup par l’exécution directement avec un php-cli (en mode ligne de commande) des fonctions.

Pour owncloud, c’est cette deuxième méthode qui est privilégié. Tu constateras plus tard que pour wordpress, c’est la première que l’on utilise.

L’automate que j’utilise et que je recommande sous archlinux est cronie.

Installation de cronie

Mise en place de la tâche cron

La plupart des outils de cron utilise une syntaxe assez proche basée sur le modèle suivant :

Il est possible dans chacun des champs de date d’indiquer un nombre précis, une plage précise (deux nombres séparés d’un -)  une valeur quelconque (*) ou un multiple (*/5), voire une série de ces différentes possibilités séparés par une virgule,  ce qui fait que par exemple,

exécutera le script script_à_exécuter.sh toutes les 5 minutes de chaque heure, quelque soit le jour de la semaine, le numéro du jour dans le mois et quelque soit le mois. (Oui je mets des accents dans les noms de mes scripts si je veux mouhahahahaha)

Cron exécutera les tâches données en tant qu’un utilisateur précis. Pour nous il faudra que ce soit http. Sur la page en source, tu verras une autre possibilité que celle que je propose pour paramétrer crontab, choisis celle qui te convient le mieux.

Pour pouvoir mettre en place la tâche Cron, il faut donc que tu « deviennes » l’utilisateur qui doit exécuter la tâche récurrente, à savoir http.

ou bien, si ça ne marche pas

Ensuite, tu vas remplir la variable EDITOR d’un éditeur que tu maîtrises pour éviter de te retrouver piégé dans un VI !

Puis tu lances la commande

Cette commande indique que tu souhaites modifier le fichier de crontab.

Théoriquement pour le moment ce fichier est vide. Tu peux y ajouter pour owncloud la ligne suivante :

Une fois fermé ton éditeur, tu recevras le message suivant :

C’est tout bon. Tu peux relire ce que contient ton crontab par la directive

De cette façon, toutes les 5 minutes, les tâches de fond dévolues à owncloud seront réalisées.

g

Merci à Framasoft pour l’outil GéGé et à Gee de prêter ses personnages.

Source :

Florck

Je suis Ingénieur en Technologies de l'Information, consultant en systèmes (GNU/Linux) et bases de données (Oracle). En recherche de contrôle sur mes informations personnelles : "La route est longue mais la voie est libre !"

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *