IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Authentification et accès à des fichiers


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Par défaut Authentification et accès à des fichiers
    Bonjour,

    Je suis actuellement bloqué par un problème.
    Pour vérifier si une personne à le droit d'accéder à un fichier je passe par un script perl auquel j'envoie une session et l'identifiant d'un fichier.
    Si la personne est autorisée j'envoie le fichier via le script perl. Le seul problème c'est que ça prend énormément de ressources.

    N'y a t-il pas un moyen de dire à apache d'envoyer une session et un idfichier à un script perl. Puis le script perl dirait à Apache ou aller chercher le fichier si la session est bonne ?

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par YanK
    Bonjour,

    Je suis actuellement bloqué par un problème.
    Pour vérifier si une personne à le droit d'accéder à un fichier je passe par un script perl auquel j'envoie une session et l'identifiant d'un fichier.
    Si la personne est autorisée j'envoie le fichier via le script perl. Le seul problème c'est que ça prend énormément de ressources.

    N'y a t-il pas un moyen de dire à apache d'envoyer une session et un idfichier à un script perl. Puis le script perl dirait à Apache ou aller chercher le fichier si la session est bonne ?

    Merci d'avance pour votre aide.
    Une redirection ? Néanmoins cela pose un problème de sécurité... Que fais-tu pour faire transiter le fichier par ton script ? Ca ne devrait pas prendre tant de ressources, sauf si tu le fais ligne à ligne pour un gros fichier.

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Par défaut
    Oui c'est exactement ça je lis ligne par ligne le fichier. J'ai pas trouvé comment l'envoyer autrement.
    Du coup ça montre en mémoire le fichier, ça met du temps et ça prend pas mal de ressource.

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par YanK
    Oui c'est exactement ça je lis ligne par ligne le fichier. J'ai pas trouvé comment l'envoyer autrement.
    Du coup ça montre en mémoire le fichier, ça met du temps et ça prend pas mal de ressource.
    Lorsque tu n'as pas besoin d'examiner le fichier, il est largement préférable de le lire par bloc avec la fonction read() (si ce n'est sysread(), encore plus rapide, mais plus délicat, après tout on n'utilise pas Perl pour écrire du C ) et de l'écrire par bloc en sortie (print convient parfaitement pour ça), ne me dis pas que tu le lisais ligne par ligne et que tu le stockais entièrement en mémoire avant de l'envoyer ?

    --
    Jedaï

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 161
    Par défaut
    Je sais pas si je dois répondre a cette question.
    Je vais essayer "read()" et "sysread()" pour voir.
    Merci beaucoup.

    Je mettrais les résultats et les différences.
    Je me disais aussi que c'était pas possible de rien trouver de mieux pour passer un fichier. J'adore perl on fait des trucs de fou, c'etait le seul truc puissant que j'arrivais pas à faire avec.

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Après un petit benchmark, il apparaît que sur mon système au moins, sysread() est légèrement plus performant que read(), mais c'est trop léger pour être notable. Par contre ce qui est tout sauf léger, c'est la différence entre n'importe laquelle de ces solutions et la lecture ligne par ligne... J'ai quelque chose comme un facteur 500 de différence sur mon ordinateur !!

    Une alternative pratique est d'utiliser File::Copy (dans le CORE depuis l'origine des temps (Perl 5.2), donc on s'assure une excellente portabilité), et sa fonction copy(), ce qui permet de résoudre le problème en deux lignes avec des performances parfaitement honorable (peut-être 1/4 plus lent que la solution à la main sur mon ordinateur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use File::Copy;
    my $filepath = 'your_file';
    copy $filepath, \*STDOUT
      or die "Coudn't copy $filepath : $!\n";
    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. accès à des fichiers par une japplet
    Par gabest dans le forum Applets
    Réponses: 4
    Dernier message: 27/05/2006, 17h39
  2. [FPDF] création d'un interface pour accés à des fichiers PDF
    Par StyleXP dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/12/2005, 10h18
  3. accés à des fichiers *.db
    Par wincroc dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/08/2005, 14h48
  4. Chemin d'accès des fichiers dans des sous rep
    Par Le Veilleur dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/11/2004, 14h37
  5. Restreindre l'accès des fichiers..
    Par Neilos dans le forum Windows
    Réponses: 6
    Dernier message: 25/08/2004, 00h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo