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

Serveurs (Apache, IIS,...) Discussion :

Traitement des requetes PHP longues par un serveur mutualisé


Sujet :

Serveurs (Apache, IIS,...)

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 193
    Points : 68
    Points
    68
    Par défaut Traitement des requetes PHP longues par un serveur mutualisé
    Bonjour,

    Je suis sur un hébergement mutualisé 90plan chez OVH et j'aimerais savoir comment un serveur mutualisé gère les requetes PHP qui peuvent durer longtemps (20-30sec). Est-ce que le serveur met à la queue chaque requete provenant d'un même site, et donc si deux utilisateurs font appel à une page du site en même temps, l'un attendra 30 sec le temps d'exécution du php et l'autre 60 secondes le temps d'exécution de la requete du premier utilisateur et de sa requete?
    Est-il réaliste de vouloir créer une page dont le temps d'exécution du php soit de 30 sec et qui sera peut-être appelé par un grand nombre de personnes?

  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
    Je ne sais pas vraiment répondre dans le détail mais je dirais que ça dépend du serveur Web installé et de sa configuration et que donc, avec un serveur Apache, le comportement devrait être le même que pour un serveur mutualisé. Donc, les requêtes concurrentes ne sont pas mises en attente, la page est exécutée plusieurs fois en parallèle.

    Le fait que la page mette plusieurs dizaines de secondes à s'exécuter est problématique sur plusieurs plans, en particulier :
    • Le nombre de connexions concurrentes du serveur Web peut être vite atteint car les connexions se libèrent lentement. Du coup, là, effectivement, des requêtes peuvent être mises en attente et certaines pourraient ne pas être honorées.
    • Timeout d'exécution et de connexion. C'est une sorte de corollaire du premier : un navigateur va peut-être attendre plus de 30 secondes pour avoir sa réponse et donc considérer que le délai max d'attente est atteint. Idem pour le serveur, surtout si il y a beaucoup de charge : le temps d'exécution du script pourrait augmenter (en plus des temps d'attente du point précédent) et générer des timeouts côté serveur et client.
    • Ressenti utilisateur : plus l'utilisateur devra attendre une page, plus il aura tendance à dire "ça marche pas" et hop ! il interrompt le chargement de la page et relance la requête, etc. Dans tous les cas, l'utilisateur doit être averti que ça travaille et qu'il faut qu'il patiente, donc mettre en place une page d'attente, et surtout pas laisser une page blanche "frustrante".

    Bref, pour les scripts qui peuvent mettre longtemps à s'exécuter, le "mode d'appel synchrone" du Web n'est pas adapter et il est préférable d'envisager une autre solution. Avec 30 secondes, ça me semble encore acceptable comme temps d'attente (mais surtout pas avec une page blanche). Il faudra "bencher" l'application pour mesurer les limites et voir s'il faut envisager un autre mode d'interraction.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 193
    Points : 68
    Points
    68
    Par défaut
    Pour le nombre de connexions concurrentes permises il va falloir que je demandes à mon hébergeur...
    Pour le page d'attente, j'avais dans l'idée de diriger l'utilisateur vers une page contenant le message d'attente qui contiendrait un <meta http-equiv="refresh" menant à la page qui met longtemps à s'afficher. Comme ca durant le chargement, la page contenant le message d'attente resterait affichée. Je ne sais pas si c'est comme ca qu'on fait habituellement?

  4. #4
    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
    Le problème avec cette solution c'est le lancement de la page qui met du temps à se charger. Tu peux essayer mais je ne garantis pas qu'une page blanche ne s'affichera pas le temps du traitement. Sinon, y a la solution Ajax ou iframe cachée qui fait une requête régulièrement sur une page qui indique si le traitement et terminé et renvoie sur la page de résultat le cas échéant.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 193
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Le problème avec cette solution c'est le lancement de la page qui met du temps à se charger. Tu peux essayer mais je ne garantis pas qu'une page blanche ne s'affichera pas le temps du traitement. Sinon, y a la solution Ajax ou iframe cachée qui fait une requête régulièrement sur une page qui indique si le traitement et terminé et renvoie sur la page de résultat le cas échéant.
    Ok merci Mac je vais faire des essais.

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

Discussions similaires

  1. [MySQL] Traitement des erreurs SQL par Php?
    Par badoumba dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 12/10/2011, 09h43
  2. traitement des apostrophes php-mysql-flash
    Par pingoo67 dans le forum Dynamique
    Réponses: 2
    Dernier message: 19/06/2007, 20h17
  3. Traitement des dates différent suivant le serveur
    Par le lynx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/09/2005, 11h14
  4. Traitement des champs memo par DBGrid
    Par Sydaze dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/04/2005, 09h24

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