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 :

Requêtes et saturation


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut Requêtes et saturation
    Bonjour,

    Une question d'ordre générale concernant PHP.
    J'ai une boucle foreach qui doit traiter de lourds tableaux, les convertir et les écrire dans un fichier local en csv.

    Ce script est hébergé sur un serveur mutualisé OVH assez basique.
    Jusqu'ici j'ai toujours développé mes petits bouts de code sans me soucier de l'impact sur ce qui moulinait derrière.
    Je n'ai aucune idée de l'estimation des ressources nécessaires pour exécuter un tel script, s'il existe une limitation dans le traitement de lourdes opérations, si cela peut affecter la disponibilité du site pour les visiteurs qui passent à ce moment là...

    Par ailleurs comment je pourrais-je avoir un feed-back de la progression de cette tâche, genre incrémenter une barre de chargement à chaque nouvelle boucle (ajax) ?
    Est-il possible/intéressant de mettre une sorte de pause dans l’exécution du script, genre toutes les X boucles ?

    Auriez-vous des liens vers de la documentation qui traite de ce sujet ?

    Merci pour vos lumières 😊

  2. #2
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 596
    Par défaut
    Salut,

    Le script ne doit pas être bloquant, regarde peut-être du côté asynchrone. Pourquoi ne pas utiliser un cron job qui fait tourner le script la nuit par exemple? Cela va dépendre du déclencheur.
    Pour les optimisations ce qui est lourd ce n'est pas le php en lui même c'est (accès aux bdd, écriture de fichier, réflexion du code...) du coup si tu peux préparer ton output et écrire d'un coup dans le fichier c'est parfait ( attention à la gestion d'erreur).
    Par contre si tu n'a pas les ressources processeurs il ni a pas de magie
    Pour la barre de progressions un compteur sur 100 fera l'affaire, je crois que la plus part des barres de progressions ne sont pas précises.
    Ce n'est que mon avis

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonjour.
    "De lourds tableaux" est plutôt flou. Tu as un ordre de grandeur pour la volumétrie ?
    Par ailleurs, je suppose que tu utilises une base SQL. Es-tu certain d'avoir très bien modélisé cette partie ?
    Enfin, j'insiste sur ce point de Lexarino : Tu peux passer du SQL à l'écriture du CSV sans passer par un énorme tableau PHP mais en intégrant ton écriture direct dans ta boucle avec une variable réaffectée à chaque tour.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut
    Merci pour vos retours. C'est très intéressant pour un autodidacte comme moi !
    En réalité il n'y a pas de passage en base de données :

    J'importe un document JSON qui fait 20 Mo et je le convertis en csv après y avoir pioché les éléments qui m'intéressent.

    Je viens de lancer le script et je suis.. stupéfait de voir que le CSV final est généré instantanément !
    Le tableur final fait 750 ko et contient 1000 lignes.

    J'ai très probablement sous-estimé la puissance de traitement.. c'est assez impressionnant car lorsque j'ouvre le json dans un navigateur, il me faut bien 3 bonnes minutes.

    Effectivement @kevin254kl je passerais par un Cron lancé en milieu de nuit.
    Oui @Dendrite c'est une boucle qui réaffecte les mêmes variables à chaque tour.
    Le script en lui-même ne fait que quelques lignes.

    Vous savez si on peut voir la "surcharge" que représente un script sur le serveur où il s'exécute ?
    Genre chez OVH y a t-il un endroit ou il aurait un graph reflétant l'activité et son influence sur la disponibilité du serveur ?

    En tout cas merci !

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Sur un mutualisé tu ne pourras pas le voir et ce n'est pas réellement ton problème.

    Ton problème est simplement que ton script s’exécute dans les limites (temps d'execution et ram) imposé par le serveur.

    Le principale problème que tu peux rencontrer , plus que le processeur , ca va être la RAM. jsond_decode() , reproduit tout le fichier en RAM , donc fichier de 20Mo = au minimum 20Mo de RAM. Si le fichier fait 500Mo ca va vite devenir problématique.
    Pour pallier à ca il existe des librairies qui ne garde ps tout en mémoire comme json-machine
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Ram qui sature dû à une requête sous nodejs
    Par corentinJacob dans le forum NodeJS
    Réponses: 2
    Dernier message: 15/01/2020, 15h32
  2. Requête qui sature le serveur
    Par Invité dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/04/2008, 14h22
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 19h38
  4. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 15h51
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 16h26

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