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

Langage PHP Discussion :

Limiter l'utilisation du CPU [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Avril 2010
    Messages : 66
    Points : 70
    Points
    70
    Par défaut Limiter l'utilisation du CPU
    Bonjour,

    Dans une page de mon site, je dois générer un fichier Excel qui sera téléchargeable par la suite par l'utilisateur. Selon ce que demande la personne, la génération peut être assez longue. Mon problème est que lorsque mon fichier se créé, le CPU est bloqué à 100% dans les Tâches Windows et iexplorer.exe se bloque avec une mémoire utilisé à plus de 138Mo. Bref, arrive le moment où la personne doit cliquer pour que le téléchargement commence et là, IE complètement bloqué, ne répond plus et donc le téléchargement devient impossible. Et si on lui demande encore plus, il bloque pendant la génération du fichier.
    Je voudrais donc savoir s'il existe un moyen de limiter l'utilisation du CPU par IE (8.0) en Php (ou par Wamp peut-être, je n'ai rien trouvé comme information sur Google...). Ainsi la génération serait certes plus lente, mais plus stable et peut-être même que cela éviterait de bloquer le site entièrement pendant la génération du fichier.

    Merci d'avance pour l'éventuel aide que vous pourriez m'apporter.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Tu peux essayer de mettre un sleep() de temps en temps
    dans le code qui génère le fichier excel

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    comment tu génères ton fichier ? les données viennent d'une base ? tu fais un traitement derrière ? quelle est la version de PHP ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu fais une grosse confusion : PHP ne peut en aucune facon gerer ce qui se passe sur le client.

    Si ton script PHP tourne en boucle et donc envoie des tonnes de données au client, il est possible que celui-ci ne gère pas.
    Essaie donc d'abord de génerer le fichier sur le serveur et voit si ca fonctionne.

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    @sabotage il me semble que Hoder travail avec IE + son serveur sur la même
    machine pour son développement (enfin c'est ce que j'ai compris, mais c'est
    pas clairement dit)

  6. #6
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Avril 2010
    Messages : 66
    Points : 70
    Points
    70
    Par défaut
    Bonjour et merci de vos réponses

    Citation Envoyé par sabotage Voir le message
    Tu fais une grosse confusion : PHP ne peut en aucune facon gerer ce qui se passe sur le client.

    Si ton script PHP tourne en boucle et donc envoie des tonnes de données au client, il est possible que celui-ci ne gère pas.
    Essaie donc d'abord de génerer le fichier sur le serveur et voit si ca fonctionne.
    La génération du fichier Excel se fait sur le serveur et c'est donc le serveur qui monte à 100% d'utilisation d'UC, puis un lien est proposé à l'utilisateur. Comme je fais mes tests sur le serveur, je suis côté client et serveur en même temps. Maintenant que vous le dites, je devrai sans doute essayer côté client et uniquement côté client pour voir ce qui se passe. J'essayerai prochainement.

    comment tu génères ton fichier ? les données viennent d'une base ? tu fais un traitement derrière ? quelle est la version de PHP ?
    Je génère mon fichier Excel sur le serveur grâce à l'objet COM. Les données proviennent effectivement d'une base et le tableau Excel est donc variable. Ma version de PHP est 5.3.0 (je vais le rajouter dans le titre, merci de me l'avoir rappelé).

    Salut,

    Tu peux essayer de mettre un sleep() de temps en temps
    dans le code qui génère le fichier excel
    Je reconnais que je n'y avais pas pensé, je vais essayer d'abord ceci, puis voir côté client comme je l'ai dis suite à la première citation.

    Merci encore pour vos réponses, j'éditerai dès que j'aurai fais les tests.

    Edit : les sleep() n'ont pas été très efficace, ça passe le temps à 50% et c'est tout, mais je crois que le problème du plantage d'IE après un certain temps est dû à l'affichage de ma barre de progression en fait -_-' Je viens tout juste de tilter que j'affichais des milliers de lignes de javascript suite à ce téléchargement et que donc c'est sans doute pour cela que IE sature... Je vais voir si c'est vraiment ça, mais d'un autre côté, ça ne résoud pas le problème que si un utilisateur génère ce tableau Excel, tout le processeur se concentrera uniquement sur cette tâche et donc aucun utilisateur ne pourra accèder au site pendant ce laps de temps.
    Re-Edit : C'était bien la barre de progression, désolé de vous avoir fait perdre votre temps sur cela
    Re-re-Edit : Après avoir revu ma barre de progression, le temps de création du fichier Excel est beaucoup moins long et donc beaucoup moins contraignant pour les autres utilisateurs qui, au final, attendrons moins d'une minute les très rare fois où le tableau sera créé. Encore merci de vos réponses qui m'ont tout de même fait tilter.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'es avec quelle type de serveur SQL ?

  8. #8
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Avril 2010
    Messages : 66
    Points : 70
    Points
    70
    Par défaut
    MySQL, pourquoi ?

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Hoder Voir le message
    MySQL, pourquoi ?
    tu sais que tu peux directement créer un fichier CSV avec mysql en une seule requêtes

  10. #10
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Avril 2010
    Messages : 66
    Points : 70
    Points
    70
    Par défaut
    Il fallait que je fasse une certaine présentation assez précise, mais je vous avoue que je serai bien intéressé par un exemple de requête de ce genre (je pensais qu'il fallait passer par phpmyadmin, je ne savais pas que l'on pouvait en faire directement).

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La génération du fichier Excel se fait sur le serveur et c'est donc le serveur qui monte à 100% d'utilisation d'UC
    Le fait que le client et le serveur soit sur la meme machine physique ne change rien.
    C'est ton process IE qui ne repond plus, pas le serveur PHP.

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

Discussions similaires

  1. [Cache] Limitation d'utilisation mémoire/cpu
    Par Papouz dans le forum Autres composants
    Réponses: 7
    Dernier message: 25/02/2009, 10h09
  2. Limiter l'utilisation CPU d'un programme sous debian
    Par programmerPhil dans le forum Administration système
    Réponses: 3
    Dernier message: 28/03/2006, 16h07
  3. [Windows 2003 Server] Problème d'utilisation du CPU
    Par Quentin dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 11/04/2005, 11h26
  4. [Info] limiter l'utilisation d'un soft à une machine
    Par bigboomshakala dans le forum C++
    Réponses: 6
    Dernier message: 17/02/2005, 12h11
  5. Trouver le % d'utilisation du CPU
    Par le mage tophinus dans le forum Assembleur
    Réponses: 20
    Dernier message: 21/04/2003, 19h43

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