Overview

Artifact ID: ace2f0c21212dc76ceb4928a3458e56f3a6668c3
Ticket: 2983ca30985bf194f5db6a028c938301ea31d158
Implémenter le stockage des fichiers
User & Date: bohwaz on 2014-04-20 23:40:30
Changes

  1. icomment:
    Voici des tests de rapidité sur un fichier de 64Mo (requête curl récupérant le fichier sur le serveur HTTP intégré à PHP) :
    
    * Lire le fichier directement depuis le système de fichier (ligne par ligne) : 290ms
    * Lire le fichier directement depuis SQLite3 avec $db->openBlob() ligne par ligne : 350ms (17% plus lent)
    * Créer un lien symbolique depuis le fichier physique et rediriger vers le lien : 65ms (78% plus rapide)
    * Lire le fichier depuis SQLite3 et l'écrire dans un fichier de cache ligne par ligne : 1150ms
    
    La méthode SQLite3 utilise 3Mo de mémoire de plus que les deux autres (forcément faut charger la lib SQLite3, mais normalement elle est déjà en mémoire avec les autres requêtes). Par contre aucune différence d'occupation de mémoire entre juste lire le fichier depuis la DB et aussi l'écrire dans un fichier de cache.
    
    Dans ce cas si on considère deux options :
    1. stocker le fichier dans la DB et toujours le lire depuis là, sans cache, directement en PHP.
    2. stocker le fichier dans la DB et le stocker en cache à la première consultation puis le servir via un symlink potentiellement recréé à chaque utilisation.
    
    La solution 2 est 4 fois plus lente à la première consultation, mais 5 fois plus rapide ensuite.
    
    La meilleure solution me semble donc être l'option 2 : certes la première consultation est lente mais ensuite le gain est très appréciable niveau réactivité entre attendre moins d'un dixième de seconde et devoir attendre un tiers de seconde : le délai est clairement ressenti dans l'expérience utilisateur.
    
  2. login: "bohwaz"
  3. mimetype: "text/x-fossil-plain"
  4. priority changed to: "Immediate"
  5. resolution changed to: "Open"