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

Bibliothèques et frameworks PHP Discussion :

[PHPExcel] Utilisation de la mémoire


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut [PHPExcel] Utilisation de la mémoire
    Bonjour à tous,
    j'utilise phpexcel pour générer une centaine de fichiers excel.
    j'ai un gros souci quand je veux insérer une image dans un fichier. En effet, à chaque génération, l'image prend 12 Mo de mémoire et donc mon programme plante au bout de 30 fichiers.
    j'ai essayé de créer une fonction permettant de supprimer l'objet drawing mais cela ne change rien.
    j'ai aussi utiliser la fonction ob_end_clean(); pour supprimer les éventuels buffers en trop mais cela est sans effet non plus.
    si j'enlève l'insertion de l'image tout fonctionne correctement.

    voici le code permettant d'insérer l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $objDrawing = new PHPExcel_Worksheet_Drawing();
       		  $objDrawing->setName('logo');
    		  $objDrawing->setDescription('logo');
    		  $objDrawing->setPath($_SERVER['DOCUMENT_ROOT']."/images/logo_etiquette2.jpg");
    		  $objDrawing->setHeight(80);
    		  $objDrawing->setCoordinates('A1');
    		  $objDrawing->setWorksheet($feuille);
    		  $objDrawing->destroy();
    		  unset($objDrawing);
    quelqu'un a déjà eu ce problème ?

    Merci d'avance

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 499
    Points : 12 603
    Points
    12 603
    Par défaut
    si ton fichier Excel, n'est aps trop compliqué (a seul sheet), tu pourrais essayer de modifier un fichier existant (avec directement l'image), plutôt que de faire appel à cette image !

  3. #3
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    tu veux dire que je génère un premier fichier. Après je modifie son contenu et enregistre sous un nouveau fichier pour les autres ?
    y'a vraiment pas moyen de supprimer l'image passée en mémoire ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 499
    Points : 12 603
    Points
    12 603
    Par défaut
    ben ça fais beaucoup de mémoire pour PHP

  5. #5
    Membre habitué Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Points : 178
    Points
    178
    Par défaut
    j'ai trouvé une solution !
    apparemment j'avais mal défini la méthode destroy() dans la classe PHPExcel_Worksheet_Drawing (fichier drawing.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
       public function destroy()
       {
          $this->_coordinates = null;
          $this->_description = null;
          $this->_height = null;
          $this->_name = null;
          $this->_offsetX  = null;
          $this->_offsetY = null;
          $this->_resizeProportional = null;
          $this->_rotation = null;
          $this->_shadow = null;
          $this->_width = null;
          $this->_worksheet = null;
       }
    à utiliser par contre après génération du fichier Excel.

    Je pense que ce post peut être utile car il n'y a rien là dessus sur Internet.

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 499
    Points : 12 603
    Points
    12 603
    Par défaut
    Peux-tu me faire un résumé de ce que tu as fait et pourquoi, comme ça je teste si on peut reproduire et je l'ajoute dans le tuto !....si tu es d'accord ?

    MaitrePylos

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

Discussions similaires

  1. Utilisation de la mémoire vive par un programme
    Par Pixcoder dans le forum C++
    Réponses: 13
    Dernier message: 25/09/2006, 13h36
  2. Réponses: 21
    Dernier message: 21/07/2006, 17h55
  3. Utilisation de la mémoire dynamique
    Par Stany dans le forum Windows
    Réponses: 17
    Dernier message: 27/04/2006, 12h39
  4. Utilisation de la mémoire
    Par jagboys dans le forum MFC
    Réponses: 1
    Dernier message: 12/11/2005, 17h30
  5. Utilisation de la mémoire vive....
    Par Neilos dans le forum Windows
    Réponses: 9
    Dernier message: 24/11/2003, 12h09

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