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

Apache Discussion :

Content-Length trop grand dans une requête HTTP, et Apache attends


Sujet :

Apache

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut Content-Length trop grand dans une requête HTTP, et Apache attends
    Bonjour,

    Le titre de ce sujet n'évoque pas un problème en soi, mais quelque chose qui me semble logique.Si l'on envoie une requête HTTP à un serveur, en précisant dans son en-tête que le corps est d'une certaine taille, le serveur attendra de recevoir du client suffisamment de données pour atteindre cette taille.

    La où le problème est, c'est si on envoie une requête dont le corps est d'une taille moins grande que celle annoncée dans le préambule.
    Le serveur reçoit la totalité de la requête, mais est faussement informé par la requête elle-même qu'il doit encore en attendre d'autre, alors il attend.

    Expérience testée avec la bibliothèque PHP php_curl pour contacter un serveur. Au bout de largement plus de 30 secondes, j'obtiens un retour :
    Fatal error: Maximum execution time of 30 seconds exceeded
    Mais voilà, mon serveur à moi est un service web que je code. Je peux pas lui permettre de bloquer une connection pendant 30 secondes en attendant que des données n'arrivent pas.

    Alors peut-on et comment modifier le comportement d'Apache pour lui dire qu'il ne faut pas attendre si longtemps ?

    J'ai regardé dans le fichier httpd.conf of course, et donc j'ai trouvé une directive dont la valeur par défaut est 300, qui s'appelle TimeOut :

    Directive TimeOut
    Syntaxe : TimeOut nombre
    Défaut : TimeOut 300
    Contexte : configuration serveur
    Statut : noyau

    La directive TimeOut définit la temporisation courante pendant laquelle Apache attendra l'une de ces trois choses :

    1. Le temps total de réception d'une requête GET.
    2. Le temps entre la réception de paquets TCP lors d'une requête POST ou PUT.
    3. Le temps entre deux acquittements lors de la transmission de paquets TCP de réponse.

    La valeur par défaut était de 1200 avant la version 1.2, mais a été abaissée à 300 depuis, ce qui est déjà largement plus que nécessaire dans la plupart des situations. Il n'est cependant pas réglé plus bas car il peut exister (encore) des portions de code un peu "floues" par lesquelles le temporisateur n'est pas remis à zéro lors de la transmission d'un paquet.

    Bon ... Mais à combien je peux la mettre moi ? et est-ce que je dois faire ça, ou y a t'il une autre solution ?
    En sachant que mon serveur est un mini-service web basé sur une architecture REST (donc que de l'HTTP pour lui causer). Ce serveur est actuellement la même machine que le client, mais ce ne sera pas toujours le cas.

    Bonne journée

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Oragon Efreet Voir le message
    Bon ... Mais à combien je peux la mettre moi ?
    Aucune idée !!! C'est toi qui codes ton serveur Web et qui dis que 30 secondes c'est trop... 10 secondes ?

    Citation Envoyé par Oragon Efreet Voir le message
    et est-ce que je dois faire ça, ou y a t'il une autre solution ?
    Une fois de plus, c'est toi qui codes ton serveur Web, donc tu choisis. Dans tous les cas, il faut un tel timeout.

Discussions similaires

  1. Critère "le plus grand" dans une requête Access
    Par triistaan dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/01/2015, 18h23
  2. Chaine trop longue dans une requête
    Par devdev dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/03/2010, 17h53
  3. Réponses: 0
    Dernier message: 10/12/2007, 17h42
  4. [Tableaux] Passer un tableau dans une requête HTTP ??
    Par haffouff dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2006, 17h17
  5. Réponses: 1
    Dernier message: 21/03/2006, 14h29

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