Question

J'espère que c'est simple.

Je lance une application web Rails où je suis sur les 100 sites d'hébergement de l'école. Les poignées d'une application tous les sites, et j'ai une interface de gestion où l'on peut ajouter et supprimer des écoles etc ...

Je veux ajouter une stat à cette interface qui est l'espace disque total utilisé par cette école. Chaque fichier écoles sont stockés dans une structure de répertoire séparé de sorte que est facile à trouver. Le seul problème est que je besoin d'être rapide. La question est ce qui est le meilleur moyen de trouver cette info. Si l'on pouvait trouver via un appel rubis à la volée, ce serait génial, mais je suis ouvert à tout ce qui fonctionnera. Idéalement, je voudrais éviter d'avoir à mettre en cache et le fond de générer ces données (au moins au niveau des rails). :)

Était-ce utile?

La solution

Si vous voulez aller avec Ruby pur, vous pouvez essayer ce code. Bien que si vous êtes à la recherche de vitesse, je suis sûr que du serait plus rapide.

def dir_size(dir_path)
  require 'find'
  size = 0
  Find.find(dir_path) { |f| size += File.size(f) if File.file?(f) }
  size
end

dir_size('/tmp/')

Autres conseils

`du -s "/your/path/here"`.split("\t").first.to_i #returns bytes

Avez-vous essayé juste en cours d'exécution du répertoire de chaque sur demande? Sur ma boîte de vieillissement je peux faire du sur un répertoire de 15M dans ~ 4ms et 250M dans ~ 50ms. Ces deux semble raisonnable pour la tâche à accomplir. Quelle sont les répertoires? Avant d'essayer d'optimiser vraiment ce assurer que son vaut vraiment la peine de votre temps. YAGNI et tout ça.

Vous pouvez toujours garder une trace sur le téléchargement quand ils vous fournir le fichier. De cette façon, vous avez juste besoin de suivre le delta sous forme de fichiers sont ajoutés ou supprimés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top