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

Symfony PHP Discussion :

Enregistrement des données lents


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut Enregistrement des données lents
    Bonjour,

    Je voulais savoir si c'est normal d'avoir un temps de réponse de 3 secondes (en local) pour l'enregistrement d'un formulaire (formulaire imbriquées)?

    Je trouve sa beaucoup trop long. Enfin c'était pour savoir si c'était que chez moi ou si c'était le formulaire symfony ?

    Pour précision les 3 seconde de temps de réponse est dans le meilleur des cas!! j'ai un autre formulaire qui met 5-10 secondes...

    Cordialement.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    http://www.developpez.net/forums/d11...symfony2-lent/

    Je ne sais pas s'il y a de réelles solutions quand tu es sur Windows

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    j'ai un hébergement sur ovh et c'est tout aussi lent (en mode dev)

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par rafleboss Voir le message
    j'ai un hébergement sur ovh et c'est tout aussi lent (en mode dev)
    et en prod ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Un hébergement sous ovh....
    Je suppose qu'il n'est pas sous windows? Si oui... la réponse s’arrête la.

    Tu as un peu de code à partager pour voir si ton code est optimisé?
    Parce que meme sous windows, cela ne doit pas mettre 3s!
    Typiquement des collections d'EntityType, ca fait mal si tu ne passes pas les infos en __construct().
    Un petit si la réponse convient. Merci.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    en prod sur ovh c'est 1,55 secondes!!! je trouve sa énorme encore! surtout que je suis le seul à l'utiliser...

    sinon j'ai un autre formulaire ou le temps de réponse est de 20 secondes!!!!

    Voila le code de mon formulaire :
    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
     
    $builder->add('poids', 'text', array('required' => false,'error_bubbling'=>true,'label'=>'Poids (en kg)'));
        	$builder->add('taille', null, array('required' => false,'error_bubbling'=>true,'label'=>'Taille (en cm)'));
     
     
        	$builder->add('medecin', 'collection', array(
        	    	    	'type' => new MedecinForm($this->_typeCoordonnee,$this->_typeTelephone,$this->_pays,$this->_departement,$this->_typePersonnelSante,$this->_sexe),
        	    	    	'prototype'=>true,
    		    	    	'error_bubbling'=>true,
    		    	    	'allow_add'=>true,
    		    	    	'allow_delete'=>true,
        					'required'=>false
        	));
     
        	$builder->add('vaccin', 'collection', array(
        	    	    	    	'type' => VaccinForm(),
        	    	    	    	'prototype'=>true,
    		    	    	    	'error_bubbling'=>true,
    		    	    	    	'allow_add'=>true,
    		    	    	    	'allow_delete'=>true,
    		    	    	    	'required'=>false,
        	));
    ma classe Sante :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    ....
    /**
         * @var float $poids
         *
         * @ORM\Column(name="poids", type="float")
         */
        private $poids;
     
        /**
         * @var float $taille
         *
         * @ORM\Column(name="taille", type="float")
         */
        private $taille;
     
     
     
        /**
         * @var Doctrine\Common\Collections\Collection $medecin
         *
         * @ORM\OneToMany(targetEntity="Medecin",mappedBy="carnet",cascade={"persist", "remove", "merge"}, orphanRemoval=true)
         */
        private $medecin;
     
        /**
         * @var Doctrine\Common\Collections\Collection $vaccin
         *
         * @ORM\OneToMany(targetEntity="Vaccin",mappedBy="carnet",cascade={"persist", "remove", "merge"}, orphanRemoval=true)
         */
        private $vaccin;
    ...
     /**
         * Set medecin
         *
         * @param IML\XXXBundle\Entity\Medecin $medecin
         */
        public function addMedecin( Medecin $medecin)
        {
            $this->medecin[] = $medecin;
        }
     
        /**
         * Get medecin
         *
         * @return Doctrine\Common\Collections\Collection $medecin
         */
        public function getMedecin()
        {
            return $this->medecin;
        }
     
        /**
         * Set vaccin
         *
         * @param IML\XXXBundle\Entity\Vaccin $vaccin
         */
        public function addVaccin (Vaccin $vaccin)
        {
            $this->vaccin[] = $vaccin;
        }
     
        /**
         * Get vaccin
         *
         * @return Doctrine\Common\Collections\Collection $vaccin
         */
        public function getVaccin()
        {
            return $this->vaccin;
        }
    et cote controleur

    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
    26
    	$form		= $this->get('form.factory')->create(new SanteForm($this->getDoctrine()->getRepository('XXXBundle:Code\TypeCoordonnee')->findAll(),$this->getDoctrine()->getRepository('XXXBundle:Code\TypeTelephone')->findAll(),$this->getDoctrine()->getRepository('XXXBundle:Code\Pays')->findAll(),$this->getDoctrine()->getRepository('XXXBundle:Code\Departement')->findAll(),$this->getDoctrine()->getRepository('XXXBundle:Code\TypePersonnelSante')->findAll(),$this->getDoctrine()->getRepository('XXXBundle:Code\Sexe')->findAll()));
     
     
    			$form->setData($sante);
     
    			if ( $request->isXmlHttpRequest() ) {
    				$form->bindRequest($request);
    				if ($form->isValid()) {
     
    						foreach($sante->getVaccin() as $patho)  
    						{	
    							$patho->setSante($sante);
    							$em->persist($patho);
    						}
    						foreach($sante->getMedecin() as $medecin)  // On persiste tous les adresses de l'utilisateur.
    						{
    							$medecin->setSante($sante);
    							$em->persist($medecin);
    						}
     
     
    					$em->persist($sante);
    					$em->flush();
    					$response = new Response(json_encode(true));
     
    				}

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Tu sais montrer MedecinForm et VaccinForm?
    Comme ce sont les formulaires imbriqués; c'est le plus important.
    Si tu ne veux pas tout montrer; ce sont les champs genre entity important et le construct.
    Un petit si la réponse convient. Merci.

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    medecinForm :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    protected $_typeCoordonnee,$_typeTelephone,$_departement,$_pays,$_typePersonnelSante,$_sexe;
    	public function __construct($typeCoordonnee,$typeTelephone,$pays,$departement,$type,$sexe)
    	{
    		$this->_typeCoordonnee		= 	$typeCoordonnee;
    		$this->_typeTelephone		= 	$typeTelephone;
    		$this->_departement			=	$departement;
    		$this->_pays				=	$pays;
    		$this->_type	= 	$type;
    		$this->_sexe				= 	$sexe;
    	}
        public function buildForm(FormBuilder $builder, array $options)
        {
        	$builder->add("type",'entity',array(
    		    					'class'				=>	'IML\IceBundle\Entity\Code\Type',
    		    					'property'			=>	'libelle',
    		    					'required'			=> 	false,
    		    					'label'				=>	'Type',
    		    					'error_bubbling'	=>	true,
    		    					'empty_value'		=>	false,
    		    					'choices'			=>	$this->_type
        	));
     
        	$builder->add('nom', 'text', array('required' => false,'error_bubbling'=>true));
        	$builder->add('prenom', null, array('required' => false,'label'=>'Prénom','error_bubbling'=>true));
     
        	$builder->add('sexe', 'entity', array(
        	    	    	            'class' 			=> 	'IML\DefaultBundle\Entity\Code\Sexe',
        	    	    	            'property'			=> 	'libelle',
        	    	    				'expanded' 			=> 	false,
        	    	    				'multiple'			=>	false,
        	    	    	            'required' 			=> 	false,
        	    						'error_bubbling'	=>	true,
        	    						'empty_value'		=>	false,
        	    						'choices'			=> 	$this->_sexe
        	));
     
        	$builder->add('telephones', 'collection', array(
    				    	    	'type'				=> 	new TelephonesForm( $this->_typeCoordonnee,$this->_typeTelephone),
    				    	    	'error_bubbling'	=> 	true,
    				    			'allow_add'			=>	true,
    				    	    	'allow_delete'		=>	true,
    				    			'prototype'			=>	true,
     
        	));
     
        	$builder->add('adresse', 'collection', array(
    		    	    	    	'type' 				=> 	new AdressesForm( $this->_pays,$this->_departement,$this->_typeCoordonnee),
    		    	    	    	'prototype'			=>	true,
    				    	    	'error_bubbling'	=>	true,
    				    	    	'allow_add'			=>	true,
    				    	    	'allow_delete'		=>	true,
     
        	));
     
        	$builder->add('email', 'collection', array(
        	    	    	    	'type' 				=> 	new EmailsForm($this->_typeCoordonnee),
        	    	    	    	'prototype'			=>	true,
    		    	    	    	'error_bubbling'	=>	true,
    		    	    	    	'allow_add'			=>	true,
    		    	    	    	'allow_delete'		=>	true
        	));
    et vaccinform :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $builder->add("type",'entity',array(
        					 'class' => 'IML\IceBundle\Entity\Code\TypeVaccin',
        	    	    	            'property' => 'libelle',
        	    	    				'expanded' => false,
        	    	    				'multiple'=>false,
        	    	    	            'required' => false,
        	    						'error_bubbling'=>true,
        	    						'empty_value'=>false,
        	    						'attr'=>array("style"=>'display:none')
        	));
     
        	$builder->add('commentaires', 'textarea', array('required' => false,'error_bubbling'=>true,'attr'=>array("style"=>'display:none')));

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Hum! Tout semble bien....
    J'ai moi même des formulaires du même genre et c'est vraiment fluide...
    Je donne ma langue au chat!
    Un petit si la réponse convient. Merci.

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    Ok!!! Merci quand même. :/ mais j'ai un problème en production sur ovh c'est quand je fais un enregistrement sur la fameuse page longue! j'ai un temps de réponse de 40 secondes... j'ai l'impression qu'il tourne en rond! mais en local sa marche bien...

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    C'est OVH aussi
    Pour l’anecdote, j'en avais un il y a 2-3 ans et il fallait +30secondes pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo "Hello world!"; ?>
    On sait jamais combien d'hébergements sont sur la même machine!
    Un petit si la réponse convient. Merci.

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    Ah d'accord. Est-ce que sa peut venir d'une mauvaise utilisation des relations bidirectionnelles?

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Points : 153
    Points
    153
    Par défaut
    RapotOR disposes-tu de l'APC?
    Sinon j'ai toujours des problèmes de performances même pour le chargement d'une page.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/06/2006, 18h05
  2. [VB6]enregistrer des données dans un fichier
    Par tchinette42 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 19/04/2006, 19h55
  3. [HTML] Tableau pour l'enregistrement des données
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 01/11/2005, 16h28
  4. [Access] Enregistrer des données de type Texte RTF
    Par portu dans le forum Bases de données
    Réponses: 22
    Dernier message: 27/10/2005, 23h54
  5. Réponses: 7
    Dernier message: 20/03/2005, 15h53

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