Salve a tutti!
Sto creando la mia classe per l'astrazione al database, ma purtroppo ho alcuni problemi.
Ho già creato una classe che oggettizza le funzioni per la creazione di alcune query in PHP in sistemi OOP $query->select()->where()->limit()->execute(), ed ora sto creando il vero e proprio gestore delle query che le esegue e ritorna i dati come array.
A questo punto la query che eseguo è questa:
Ed il risultato che mi fornisce il codice attuale è il seguente:Codice:SELECT * FROM `site_animes` AS `Anime` LEFT JOIN `forum_users` AS `User` ON `Anime`.`user_id` = `User`.`user_id` LEFT JOIN `site_anime_producers` AS `AnimeProducer` ON `Anime`.`producer_id` = `AnimeProducer`.`id`
Codice:[0] => Array ( [Anime] => Array ( [id] => 0 [name] => 1 [user_id] => 2 [producer_id] => 3 ) [User] => Array ( [user_id] => 4 [user_type] => 5 [group_id] => 6 [user_permissions] => 7 [user_perm_from] => 8 [user_ip] => 9 [user_regdate] => 10 [username] => 11 [username_clean] => 12 [user_password] => 13 [user_passchg] => 14 [user_pass_convert] => 15 [user_email] => 16 [user_email_hash] => 17 ) [AnimeProducer] => Array ( [id] => 84 [name] => 85 ) ) [1] => Array ( [Anime] => Array ( [id] => 0 [name] => 1 [user_id] => 2 [producer_id] => 3 ) [User] => Array ( [user_id] => 4 [user_type] => 5 [group_id] => 6 [user_permissions] => 7 [user_perm_from] => 8 [user_ip] => 9 [user_regdate] => 10 [username] => 11 [username_clean] => 12 [user_password] => 13 [user_passchg] => 14 [user_pass_convert] => 15 [user_email] => 16 [user_email_hash] => 17 ) [AnimeProducer] => Array ( [id] => 84 [name] => 85 ) ) )
Ora, il problema maggiore sta nella pesantezza del codice. Solo per eseguire quelle due query lì impiega 0.28 secondi di media, se sostituisco il mio codice con una semplice mysql_fetch_assoc scendiamo a 0.03 secondi.Codice PHP:/*
// fetchAll()
// Return all rows as array.
NOTA CHE $this->sql_object si riferisce ad una mysql_query()
*/
function fetchAll(){
if(!$this->sql_fetched_data){
$result_array=array();
$num_fields = mysql_num_fields($this->sql_object);
$result_fields = array();
for($idx = 0; $idx < $num_fields; $idx++){
$field_table = mysql_field_table($this->sql_object, $idx);
$field_name = mysql_field_name($this->sql_object, $idx);
if(!isset($result_fields[$field_table])){ $result_fields[$field_table] = array(); }
$result_fields[$field_table][$field_name] = $idx;
}
while($row=mysql_fetch_array($this->sql_object)){
$result_row = array();
foreach($result_fields as $key => $result_fields_row){
$result_row[$key] = array();
foreach($result_fields_row as $keyb => $field){
$result_row[$key][$keyb] = $field;
}
}
$result_array[] = $result_row;
}
$this->sql_fetched_data = $result_array;
}
return $this->sql_fetched_data;
}
La mia domanda è: Come posso alleggerire il tutto? Al limite riesco a farlo dal lato MySQL?
Ciao,
Mattia.

LinkBack URL
About LinkBacks
