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 :

Segmentation fault lié aux champs du Select


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 99
    Par défaut Segmentation fault lié aux champs du Select
    Bonjour,

    Peut-être que le sujet à déjà été traité, mais je ne vois pas bien les mots clefs à rechercher.

    Dans un SELECT avec Zend_Db je lui précise les champs que je veux récupérer car comme il y a plusieurs tables jointes, si je prends tout les champs je ralenti la requête et surtout le traitement après.

    Mon problème est que je suis limité au nombre de champs utilisés dans le 3ème argument du join.
    Pour faire simple, disons que j'ai le droit qu'à 5 champs, si j'en mets 2 dans le premier join et 4 dans le deuxième je récupère un segmentation fault. Si je mets 3 dans le premier et 2 dans le second ce sera ok. Peu importe les champs, c'est le nombre qui m'amène au SF.

    Voici le code pour les plus courageux:

    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
    22
    23
    24
    25
     
    		$select	=	$this->_db->select()
    			->from($this->_name
    				, array(new Zend_Db_Expr('SQL_CALC_FOUND_ROWS '.$this->_Id)))
    			->join($this->_JDOC
    				,$this->_name.'.'.$this->_Id.' = '.$this->_JDOC.'.'.$this->_JDOC_Id
    				,array($this->_JDOC_Description) // Champ 1
    			)
    			->joinLeft($this->_JDTR
    				,$this->_name.'.'.$this->_Id.' = '.$this->_JDTR.'.'.$this->_JDTR_Doc_Id 
    				.' AND '.$this->_JDTR_Active.' != 0'
    				,array('DTR_DEF_INFOS' => new Zend_Db_Expr(
    						"CONCAT(".$this->_JDTR_OEM.",'-', " // Champ 2
    									.$this->_JDTR_PROJECT.",'-', " // Champ 3
    //									.$this->_JDTR_GP.",'-', " // Champ 4
    //									.$this->_JDTR_VERSION.",'-', " // Champ 5
    									.$this->_JDTR_EVO.")" // Champ 6
    						)
    				)
    				//,array($this->_JDTR_OEM, $this->_JDTR_PROJECT, $this->_JDTR_GP, $this->_JDTR_VERSION, $this->_JDTR_EVO )
    			)
    			->join($this->_JUSR
    					,$this->_JDOC.'.'.$this->_JDOC_Creator.' = '.$this->_JUSR.'.'.$this->_JUSR_Id
    					,array( 'CREATOR_NAME' => $this->_JUSR_Name) // Champ 7
    			)
    Explication sur le code:
    L'important ce sont les lignes écrite avec Champ X.
    Si je décommente la ligne avec Champ 5 ou Champ 6, j'obtiens un SF.
    Si je commente la ligne champ1 et que je décommente Champ 5 ou 6 cela fonctionne.
    Si je commente champ 7 et champ 1 je peux décommenter champ 5 et champ 6...

    Du coup pour l'instant je vais faire du select * (commentaire champ 1 et 7). Mais là je vais me récupérer plusieurs 10n de champs pour en exploiter 8 ou 9.

    PS: pour les observateurs, le CONCAT ne change strictement rien au problème, vous pouvez voir qu'en commentaire j'avais la ligne qui me posait problème au début. Etant persuadé que c'était la ligne et non le nombre de champ de la requête complète...

    D'avance merci à ceux qui me liront et encore plus à ceux qui me répondront !!!

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    Pas de réponse toute prête, mais je sais qu'il y a eut pas mal de soucis de segfaults dans d'anciennes versions de ZF. Tu as possibilité de tester en upgradant un peu ta version du framework voir si ça se produit toujours ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 99
    Par défaut
    Déjà, merci d'avoir prit le temps de me lire.

    Le site est assez conséquent, un update de version est envisageable, mais au risque de créer des bugs à d'autres endroits.

    Dans un premier temps je peux faire un test pour voir si au moins cela corrige mon problème.

    Dans un deuxième temps, si je dois updater Zend, que me conseil tu comme version en terme de compatibilité?

    Merci.

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    Déjà, teste à partir de quelle version le problème est résolu (si il est résolu...). Moins l'écart sera grand, plus ça sera simple pour toi de migrer.

    Sur zend.com tu as des guides de migration version par version pour t'aider à anticiper les soucis principaux : http://framework.zend.com/manual/1.1...ration.18.html

    Dans un premier temps migre juste ce qui est nécessaire pour corriger le soucis, le temps de livrer le projet, mais par la suite ça serait bien de planifier une maj vers la 1.12 et d'anticiper un peu la fin du support de ZF1, et donc la migration vers ZF2 (ou un autre framework)..

    Pour rappel la fin du support de ZF1 est prévue pour "pas avant début 2014" selon la FAQ Zend Framework, et probablement même un peu plus tard vue l'adoption un peu difficile du ZF2. Mais ça finira inévitablement par arriver.

Discussions similaires

  1. accès aux champs d'une requête SELECT
    Par acheo dans le forum C#
    Réponses: 8
    Dernier message: 04/10/2011, 10h09
  2. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  3. [Flash MX ]Acceder aux champs d'un Objet
    Par yacinechaouche dans le forum Flash
    Réponses: 3
    Dernier message: 15/04/2004, 17h39
  4. Réponses: 8
    Dernier message: 23/10/2003, 16h22
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

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