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 :

Ressources (ram + processeur) lors d'un script PHP


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut Ressources (ram + processeur) lors d'un script PHP
    Bonjour à tous,

    Je vais faire simple. J'ai un script qui tourne pendant 2 heures à 100% cpu et qui me bloque le serveur.
    Cela ne me gène pas qu'il prenne 4h.

    Le "nice -n 19" ne change car cela gère la priorité et non les ressources. Bref, du coté serveur, je galère.

    Mais je me dis qu'il y a peut-être des combines PHP pour diminuer la charge serveur.
    Je n'ai jamais vu cela mais des sortes de "wait" qui permettrait de laisser apache lancer php pour l'affichage des pages web.

    Je sais que de prendre un meilleur serveur serait mieux mais ce script a lieu la nuit donc j'aimerais juste améliorer la chose.

    Merci d'avance pour toute idée ou conseil

  2. #2
    Membre habitué Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Points : 155
    Points
    155
    Par défaut
    Bah Si je comprend bien tu veux laisser apache disponible pour afficher des page web.

    Dans se cas là n'execute pas ton script PHP avec apache mais directement en ligne de commande. en faisant
    $ php monScript.php

    Car apache n'est pas vraiment fait pour lancé des batch en PHP.

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Non, non, je me suis mal expliqué.

    Je lance evidemment mon script php en batch. La commande est en crontab associée à un "nice -n 19" mais comme je le disais, cela gère les priorités et non les ressources.

  4. #4
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Merci pour le lien. Je connais les sujets abordés mais cela est très intéressant de retrouver un bon article assez complet. Je vais faire suivre.

    Je pense que la seule solution à mon script est un meilleur code (j'ai passé 2 jours à optimiser et le problème viens de centaines de méga de xml "bien foireux" qui arrivent en entrée).

    mon seul espoir était de pouvoir mettre en pause ce processus de temps en temps.

  6. #6
    Membre habitué Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Points : 155
    Points
    155
    Par défaut
    Mettre en pause je sais pas!
    Mais peux être faut t'il revoir la manière de faire de ton script. Je connais pas la masse de xml que tu as à traité, mais au lieu de tout traité d'un coup, tu pourrait les traiter par lots.

    En incluent un compteur dans ton script de manière à s'arrête tous seul au bout d'un certain nombre de traitement. Et tu coup tu le lance plusieurs fois en crontab mais a horaires décalé.

    ou alors avant chaque traitement de xml du check la l'heure si l'heure est supérieure à tel heure tu arrête le traitement sinon tu continu.

    Bon courage.

  7. #7
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    En effet, c'est une des solutions mais elle sera difficile à mettre en place. Et oui, avec une "très bonne" conception, cela aurait été possible.

    Merci du conseil, c'est tout con mais ca marchera si j'ai le temps de mettre en place.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Salut,

    si tu as un problème de manque de ram, il n'y à pas trente six solutions. Au niveau de la machine on fera un upgrade. Au niveau du code on va regarder ce qui pèse en mémoire, ensuite on va se demander si c'est utile de mettre l'intégralité de mon document en mémoire ou si je peux me contenter d'un fragment.
    Un très bon exemple est de dire, je dois copier un fichier de 5 giga, soit je le charge en mémoire (et je sature) puis après je l'écrit sur le DD.
    Soit je lit 10 mega par 10 mega et j'écrit 10 méga par 10 méga.
    (En passant, PHP déteste les gros fichiers en mémoire)
    Appliquer à XML sa oblige à changer de parser, de DOM on préférera SAX si j'ai bon souvenir.

    Si tu as un problème d'occupation CPU, là il faudrait pouvoir lancer une fonction asynchrone qui met en pause le script toutes les 500 ms pour une durée de 10 ms (Valeur à ne pas prendre tels quelles.....).
    De cette manière toutes les 500 ms tu crées une fenêtre pour gérer une autre requête http.
    Pour faire une telle chose en PHP .... Peut être les ticks http://fr2.php.net/manual/fr/functio...k-function.php et http://www.phpdig.net/ref/rn62.html.

    A plus

  9. #9
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Oh, ça c'est cool.

    Je doute d'avoir le temps de mettre en place tout de suite mais en tout cas, je risque de l'essayer d'ici quelques temps.

    Concernant DOM, je m'en doutais et je m'en mords les doigts

    Je regarde tes liens.

    merci beaucoup

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

Discussions similaires

  1. Besoin de RAM de plus pour un script php
    Par ryodo dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2012, 14h34
  2. erreur xml générée lors de mon script php
    Par NicoO_O dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2009, 17h28
  3. [SQL-Server] Erreur 500 lors d'un script php avec sql
    Par DeusDavid dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/12/2006, 19h47
  4. Réponses: 6
    Dernier message: 23/12/2005, 14h51
  5. Réponses: 7
    Dernier message: 20/10/2005, 21h51

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