Stockage des fichiers

Les plugins, la base de données, les sauvegardes et les fichiers de cache sont tous stockés dans un sous-répertoire data par défaut, afin de réunir tous les fichiers modifiés par Paheko dans le même dossier.

Normalement Paheko n'écrit dans aucun autre répertoire par défaut.

Modifier la taille des fichiers autorisés à l'envoi

Par défaut, avec Apache, Paheko autorise les envois (upload) jusqu'à 256 Mo. Mais il est possible que ce réglage ne fonctionne pas. Dans ce cas (utilisation d'un autre serveur web parexemple), si vous désirez augmenter la taille des fichiers autorisés à l'envoi dans Paheko, il faut modifier les paramètres suivants de votre fichier php.ini (exemple ici pour 100 Mo) :

upload_max_filesize = 100M
post_max_size = 100M

Stockage des documents

Par défaut les documents sont stockés dans la base de données, ainsi il suffit de sauvegarder le fichier SQLite de la base de données (association.sqlite) pour tout sauvegarder, simple et rapide !

Quel est la différence ?

Stockage dans SQLite Stockage dans le système de fichiers
un seul fichier à sauvegarder ou à archiver plus complexe à sauvegarder : il faut sauvegarder la base de données d'un côté, et les fichiers de l'autre
un peu moins rapide 10% plus rapide que SQLite (60% avec X-SendFile)
taille maximale d'un fichier de 1 Go pas de limite
ralentissements des sauvegardes et mises à jour au-delà de 1 Go de documents pas de limite
restaurer une sauvegarde restaure aussi les fichiers restaurer une sauvegarde ne revient pas en arrière sur les fichiers, tout est séparé

Il est recommandé de passer à un stockage sous forme de fichiers séparés (FileSystem) si vous souhaitez stocker des fichiers de plus de 1 Go, ou si vous commencez à dépasser 1 Go de fichiers stockés au total.

Bien que SQLite soit capable de stocker jusqu'à 140 To, d'autres facteurs entrent en jeu pour Paheko, notamment les sauvegardes et mises à jour. En effet à chaque mise à jour Paheko effectue une sauvegarde avant la mise à jour, pour pouvoir revenir en arrière en cas de souci lors de la mise à jour. Hors cette sauvegarde implique de copier le fichier de base de données. Plus ce fichier est gros, plus le temps de sauvegarde est long. Et parfois sur des serveurs mutualisés (qui sont assez lents), le temps de sauvegarde d'une base de données de 1 Go, additionné au temps de mise à jour, peut commencer à dépasser 30 secondes, qui est généralement le temps maximum d'exécution d'un script PHP.

C'est pour cela qu'il est conseillé, pour les associations qui commencent à avoir beaucoup de stockage de documents, de stocker les documents hors de la base de données, comme décrit ci-dessous.

Comment stocker les fichiers sur le système de fichiers

Si vous préférez stocker les documents dans des fichiers séparés, il faut positionner les constantes suivantes dans le fichier config.local.php :

const FILE_STORAGE_BACKEND = 'FileSystem';
const FILE_STORAGE_CONFIG = __DIR__ . '/data/files';

Ceci stockera les fichiers dans le répertoire data/files de Paheko, au lieu de la base de données.

Migration entre systèmes de stockage

Il est possible de changer de système de stockage de fichiers, en utilisant les commandes paheko storage import et paheko storage export. Voir la page Ligne de commande pour les détails.

Il est également possible de faire cette manipulation dans le menu Configuration, bouton Configuration du serveur.

Cela permettra de migrer les fichiers depuis/vers le système de fichier.

Quota de stockage des documents

Par défaut Paheko autorise les documents à prendre tout l'espace disponible sur le système de fichier.

Pour limiter cela, il faut positionner la constante FILE_STORAGE_QUOTA (en octets).

const FILE_STORAGE_QUOTA = 10*1024*1024*1024; // 10 Go

Activation de X-SendFile

Ce réglage permet d'améliorer la rapidité d'envoi des documents. En effet dans ce cas c'est le serveur web qui renvoie le fichier directement au navigateur, sans passer par PHP. C'est donc environ deux fois plus rapide.

Cela ne fonctionne qu'avec les serveurs web suivants :

  • Apache avec mod_xsendfile (paquet Debian/Ubuntu libapache2-mod-xsendfile)
  • Lighttpd

N'activez cette fonctionnalité que si vous êtes sûr que le module est installé et activé (sinon les fichiers ne pourront être vus ou téléchargés).

Nginx n'est PAS supporté, car X-Accel-Redirect ne peut gérer que des fichiers qui sont dans le document root du vhost, ce qui n'est pas le cas ici.

Pour activer X-SendFile mettre dans la config du virtualhost de Paheko les lignes suivantes :

XSendFile On
XSendFilePath /var/www/paheko

Adapter le chemin pour coller à votre configuration locale. Ce chemin doit être la racine de Paheko.