[CakePHP] Requête trop longue

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [CakePHP] Requête trop longue

[CakePHP] Requête trop longue

par orage33 » 22 janv. 2012, 20:12

Bonsoir,

J'ai décidé de faire mon site avec le Framework cakephp et pour l'instant je galère un peu.

J'ai un petit problème avec une requête qui est un peu longue à charger, je m'explique :

J'ai un controller PrevisionsController.php où j'effectue cette requête :
                for($i=1;$i < 121;$i++){ 

			$this->Prevision->setSource("data_".$i."");

			//On déclare les différentes variables ici
			$params_ville = $this->params['url'];
		

			if($params_ville['lon'] < 0){
				$_long = $params_ville['lon']+ 360;
				$_lat = $params_ville['lat'];
			}else{
				$_long = $params_ville['lon'];
				$_lat = $params_ville['lat'];
			}

		
			$result = $this->Prevision->find('all',array(
				'order' => 'SQRT(POW(`LAT`-'.$_lat.',2)+POW(`LONG`-'.$_long.',2)) ASC',
				'limit' => '1')); 

			$data[$i] = $result['0']['Prevision'];
		
			$this->set('data',$data);
			$this->set('ville',$params_ville);

		}
Je possède donc une base de donnée avec 120 tables (échéance), chaque table comportant 80 champs et contenant 14 763 lignes. Toute les structures des tables sont identique excepter les données à l'intérieure.

La structure de la table :

ID, LAT, LONG, DATA1,DATA2, [...], DATA80

Sachant que les champs LAT et LONG sont indexés

Ma requête me donne un résultat sous cette forme là :
Array
(
    [1] => Array                                                      ------------------------> Correspond à l'échéance
        (
            [ID] => 3049
            [LONG] => 359.979762
            [LAT] => 42.968525
            [DATA1] => -0.024
            [DATA2] => 23.227
            [...] => ....
            [DATA80] => -0.000375977
        )
)
Après je n'ai plus qu'à récupérer mes données dans la vue sous cette forme là : $data['1']['DATA2'].

Cependant l'affichage n'est pas instantané et m'est environ 5,5secondes à charger toute les données.

Donc je voulais savoir si c'est possible d'améliorer ma requête pour que l'affichage soit instantané car la je bloque un peu.

Codialement,
Ludovic