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

Zend Framework PHP Discussion :

Allowed memory size dépassée


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut Allowed memory size dépassée
    Bonjour,
    Jusque là, tout allait assez bien dans mon programme.
    Je n'avais jusque là que deux communes dans la table, ce qui me suffisait pour tester.
    J'ai ajouté les 36680 autres communes françaises et je me retrouve avec une belle erreur :
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 72 bytes) in /var/www/html/stagmas/library/Zend/Db/Table/Abstract.php on line 886
    Sur le formulaire, j'ai deux Zend_Form_Element_Select pour choisir la commune.
    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
    16
    17
    18
    19
    20
    21
            // Commune de résidence de l'étudiant
            $id_commune_residence = new Zend_Form_Element_Select('id_commune_residence');
            $id_commune_residence
                ->setLabel('Commune de résidence')
                ->setRequired(true);
     
            $commune = new Application_Model_DbTable_Commune();
            $result = $commune->fetchAll();
            $listecommunes = array();
            foreach($result as $cmn)
            {
                $listecommunes[$cmn->cmn_id] = $cmn->cmn_nom;
            }
            $id_commune_residence->setMultiOptions($listecommunes);
     
            // Commune de l'établissement d'origine
            $id_commune_etablissement = new Zend_Form_Element_Select('id_commune_etablissement');
            $id_commune_etablissement
                ->setLabel('Commune')
                ->setRequired(false)
                ->setMultiOptions($listecommunes);
    Je pense que le problème vient de là et c'est vrai que 36682 communes dans la liste, ça fait beaucoup mais bon... il me semble avoir déjà vu des sites afficher un gros flot de données.

    Je vais passer ça en Zend_Dojo_Form_Element_FilteringSelect quand j'aurais déjà résolu mon petit problème de mise en forme sur ce genre de truc en Dojo mais si c'est pour que la page ne s'affiche pas...

    J'ai passé le memory-limit de /etc/php.ini à 128M mais ça n'a fait qu'augmenter le nombre affiché par le message d'erreur.

    Une idée pour résoudre ce problème ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    As-tu essayé en te passant des classes de table?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $db = Zend_Db_Table_Abstract::getDefaultAdapter();
    $listecommunes = $db->fetchPairs("SELECT cmn_id, cmn_nom FROM commune" );
    $id_commune_residence->setMultiOptions($listecommunes);

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Merci pour la réponse.
    Ça fonctionne mais il faut plusieurs minutes pour afficher la page contenant les deux Zend_Form_Element_Select. C'est évidemment inacceptable en l'état !

    Je vais essayer une zone de texte avec l'autocomplétion en Dojo pour voir si ça serait plus rapide.

    À moins que quelqu'un ait une autre idée à me soumettre ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    En même temps une liste de choix de 36682 valeurs n'est pas idéal pour l'utilisateur!

    autres solutions:

    - Le comboBox avec autocomplete, mais pareil faut voir le temps de transfert de tes 36000 communes en json.....

    - Sinon tu peux passer par un système de filtres par lettre qui réduirais le nombre de choix.

    -Sinon moteur de recherche, l'utilisateur entre une commune, valide, et tu lui sort celles qui correspondent....

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    J'ai remarqué dans firebug que le chargement long s'arrêtait sur une erreur de localisation à cause des dossiers "en" et "en-us" manquants dans js/dojo/dijit/form/nls.
    En les ajoutant et en les remplissant avec les fichiers nécessaires, j'ai réduit le temps d'affichage à quelques secondes mais c'est encore beaucoup.

    Je vais chercher du côté des solutions que tu proposes.

    Merci.

    EDIT :
    Pas très concluant pour le moment !
    J'ouvre une autre file sur le Zend_Dojo_Form_Element_FiletringSelect.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [Images] Galerie photo (Fatal error: Allowed memory size)
    Par Dookie dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 25/05/2010, 12h13
  2. [PEAR][Mail] Fatal Error : Allowed memory size of 8388608 bytes exhausted
    Par bigben89 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 20/10/2008, 18h01
  3. Réponses: 3
    Dernier message: 08/08/2007, 19h08
  4. [Librairies] zip.lib.php Fatal error: Allowed memory size of 8388608 bytes exhausted
    Par manaboko dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 22/05/2006, 10h42
  5. Fatal error: Allowed memory size of...
    Par Webfab dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2005, 10h11

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