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

Autres langages pour le Web Discussion :

[CGI +IIS] CGI multi-thread?


Sujet :

Autres langages pour le Web

  1. #1
    Membre confirmé
    Avatar de didier.cabale
    Homme Profil pro
    Conseil - Consultant en systèmes d’information
    Inscrit en
    Août 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d’information
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2004
    Messages : 130
    Points : 522
    Points
    522
    Par défaut [CGI +IIS] CGI multi-thread?
    Bonjour,

    j'ai développé un CGI installé sur MS IIS. Ce CGI est amené à lire /écrire sur divers fichiers xml.
    Supposons qu'une 10aine de requêtes HTTP soient envoyées en même temps (par différents internautes) sur mon CGI. Comment risque-t-il de réagir? Tous les internautes seront-ils servis en même temps? Si non, quel pourait être le délai d'attente?
    Autre manière de voir les choses: IIS +CGI sont-ils:
    Mono-thread: -> existence d'une file d'attente système -> temps de réponse long pour les derniers servis, mais appli sécurisée?
    Multi-thread: -> temps de réponse court, mais risque de conflit sur les écritures fichiers?
    Merci pour votre aide
    Didier

  2. #2
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    je vais peut être me planter mais je pense que le principe est le même que si plusieurs personnes interroge en même temps une page ASP non ?

  3. #3
    Membre confirmé
    Avatar de didier.cabale
    Homme Profil pro
    Conseil - Consultant en systèmes d’information
    Inscrit en
    Août 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d’information
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2004
    Messages : 130
    Points : 522
    Points
    522
    Par défaut
    je vais peut être me planter mais je pense que le principe est le même que si plusieurs personnes interroge en même temps une page ASP non ?
    D'après moi, ce n'est pas sur, car l'exécution d'une page ASP fait partie du processus IIS. Je pense que çà serait la même chose que la page ASP si j'avais utilisé une ISAPI au lieu d'un CGI.
    Mais admettons que j'exécute une page ASP, quid des requêtes en lecture /écriture concurrentes?
    Merci
    Didier

  4. #4
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Je te confime que IIS est MultiThread (il gère chaque appel sur un thread), donc il faut l'intégrer dans le développement.
    Qui va piano va sano...

  5. #5
    Membre confirmé
    Avatar de didier.cabale
    Homme Profil pro
    Conseil - Consultant en systèmes d’information
    Inscrit en
    Août 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d’information
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2004
    Messages : 130
    Points : 522
    Points
    522
    Par défaut
    .. quid des requêtes en lecture /écriture concurrentes?
    1. merci pour ta réponse Matazz
    2. permettez-moi de soumettre ma question à nouveau: si je ne me fais pas de soucis pour la lecture d'un fichier texte en processus multithread, qu'en est-il de l'écriture ?
    Merci

  6. #6
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Ben ce qui est clair,c'est que si tu modifie un fichier quand un autre est en train de le lire tu risque d'avoir des problème.

    Moi je te conseille pour l'écriture d'ouvrir le fichier en mode exclusif, et chaque thread de lecture et d'écriture attend jusqu'a ce qu'il puisse l'ouvrir.

    Par contre ça risque de ralentir ton CGI car il va y avoir des demandes qui vont attendre pour pouvoir lire ou écrire.

    Ca dépend beaucoup des fréquences d'écritures.

    Tous tes fichiers peuvent-êtres modifiés ?
    ou seulement certains.
    Qui va piano va sano...

  7. #7
    Membre confirmé
    Avatar de didier.cabale
    Homme Profil pro
    Conseil - Consultant en systèmes d’information
    Inscrit en
    Août 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d’information
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2004
    Messages : 130
    Points : 522
    Points
    522
    Par défaut
    Tous tes fichiers peuvent-êtres modifiés ?
    ou seulement certains.
    La plupart des fichiers sont en lecture seule -> no pb
    J'ai 2 fichiers en lecture /écriture:
    - le fichier des logs: on y lit lors de chaque requête http, càd très fréquemment, et on y écrit lors de chaque ouverture de session.
    - le fichier des commandes: on y lit quand on veut consulter les commandes, et on y écrit à chaque fois qu'on enregistre une commande.
    Donc si je comprend bien, tu me recommanderais de veiller à l'accès exclusif sur le fichier lors de l'écriture. Mais que se passerait-il si un utilisateur demande à lire un fichier qui est en cours d'écriture? Windows le mettra-t-il en file d'attente, puis permettra la lecture quand l'écriture sera réalisée? ou bien renverra-t-il un message d'erreur?

    Merci pour votre aide
    Didier

  8. #8
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Oui ->
    Citation Envoyé par didier.cabale
    Donc si je comprend bien, tu me recommanderais de veiller à l'accès exclusif sur le fichier lors de l'écriture.
    Citation Envoyé par didier.cabale
    ...Mais que se passerait-il si un utilisateur demande à lire un fichier qui est en cours d'écriture? Windows le mettra-t-il en file d'attente, puis permettra la lecture quand l'écriture sera réalisée? ou bien renverra-t-il un message d'erreur?
    Windows te renverra un message d'erreur comme quoi tu n'as pas le droit d'acceder au fichier.
    En fait c'est à toi de gérer dans to cgi l'endormissement du thread tant que le fichier n'est pas ouvrable.

    Sinon, moi dans une DLL ISAPI, j'ouvrai un fichier log en mode "Append", mais dans certains cas, quand j'avais plusieurs instructions "Write", les lignes étaient intercallées.

    Le mieux c'est de faire des tests.

    Cela dit si tu as vraiement beaucoup de requêtes, il vaudrai peut-être mieux utiliser une base de données.
    Qui va piano va sano...

  9. #9
    Membre confirmé
    Avatar de didier.cabale
    Homme Profil pro
    Conseil - Consultant en systèmes d’information
    Inscrit en
    Août 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d’information
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2004
    Messages : 130
    Points : 522
    Points
    522
    Par défaut
    Le mieux c'est de faire des tests
    Je pense aussi
    Cela dit si tu as vraiement beaucoup de requêtes, il vaudrai peut-être mieux utiliser une base de données
    Eh oui, on en finit toujours là, car elle, elle est faite pour çà!
    Merci pour ton aide, Matazz

  10. #10
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    de rien
    Qui va piano va sano...

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

Discussions similaires

  1. Problème de CGI/IIS/C++
    Par zoolook dans le forum IIS
    Réponses: 6
    Dernier message: 22/11/2007, 20h23
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  3. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  4. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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