Salut Fredmj,
J'ai aussi une application ou l'utilisateur charge des fichiers, avec conversion automatique vers pdf, vérification antivirus et tout le reste. Pas des centaines de milliers, mais un joli tas quand même.
J'ai pas bien lu quel aspect de posait problème, alors je vais être large:
- le téléchargement lui-même: c'est le plus embêtant, en attendant Html5, le visiteur (dans le cas d'un fichier volumineux) est obligé d'attendre que le fichier se charge, sans barre de progression ni rien d'autre. Bien sur, il existe des alternatives: des applis flash qui s'intègrent dans la page, des applis Java (comme facebook un temps) ou quelque chose d'asynchrone avec ajax et une page php en iframe. Perso, de ce côté la, j'utilise le long-polling et un iframe, de cette façon, j'ai la barre de progression et l'avancée du traitement du fichier (vérification, antivirus, copie, ...). Dans une prochaine évolution, je pense m'orienter vers une solution semblable à ce que propose google docs, qui est pas mal foutue. Et vu le soin qu'ils accordent à leurs interfaces, ce n'est pas une mauvaise inspiration
- le stockage: le fichier lui-même est enregistré sous un nom généré (type uniqid() ) dans un répertoire temporaire, le temps de procéder aux diverses vérifications et conversions. Tout ce qui à attrait au fichier (son nom originel, son extension, sa taille, son expéditeur, etc...) est enregistré en DB.
Après traitement, il est enregistré sous un nom qui rassemble son identifiant interne au programme et une version "normalisée" (seulement lettres minuscules, de longueur définie) de son nom originel, sous sa nouvelle extension (pdf), tandis que la version originelle est enregistrée dans un répertoire "d'archive". Il faut se dire que le fichier ne contient que les donneés "brutes", les données utiles (meta-données) résidant dans la DB.
- l'accès: l'accès au fichier se passe bien sur par un script, qui vérifie les droits d'accès, récupère les données brutes dans l'arborescence et les exporte avec tous les headers utiles et particuliers (ce qui permet par-exemple le sur-lignage d'une requete de recherche dans le cas d'un pdf).
Du côté hardware, je n'ai encore rien de particulier, mais il s'agira probablement d'un volume LVM, permettant de faire des snapshots (utile pour les sauvegardes stables, sans demander d'interruptions) , et de l'agrandir à la volée en cas de besoin.