Struttura $.ajax

max1974

Utente Attivo
7 Mar 2013
107
0
16
Ragazzi scusate una domanda forse anomala mi stavo ponendo un dubbio (forse pp mentali) in una pagina
ho ad esempio 10 chiamate $.ajax che puntano tutte allo stesso file (file1.php) passando un parametro es: "query1","query2","query3"....."query10"nel file php ho if "query1" else if "query2" else if "query3"....... ed eseguo le query che di volta in volta necessito....ora la domanda è sarebbe meglio strutturalmente/logicamente/per correttezza o che ne so' forse anche ai fini di velocita
avere cada chiamata $.ajax un file php diverso evitando pure di passare quel parametro o no ???

qualcuno che mi delucida per favore.
Grazie.
 

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
432
73
28
Se le chiamate sono (o possono essere) fatte simultaneamente, e la mole di dati è relativamente contenuta, può essere più ottimale eseguire una sola chiamata passando i dati in post al tuo unico php (ammesso che questo sia comunque ben organizzato per accoglierli), magari utilizzando una struttura ad array in modo da poterli opportunamente "smistare" e restituirne di conseguenza le relative risposte in un unico output, magari usando una struttura dati digeribile poi dal tuo javascript/jquery, ad esempio un csv o un json o un xml o qualsiasi altro formato organizzato in modo adeguato a ciò che ti serve ottenere.

Probabilmente in termini di velocità questo potrebbe sveltire il processo di passaggio dei dati perché viene limitato a priori il numero di transizioni tra client e server e viceversa, però la questione sarebbe comunque da valutare nel dettaglio in base ai vari fattori della tua reale situazione: quantità di traffico prevista, mole di dati per transizione, massima quantità presunta di chiamate effettuate contemporaneamente, tipologia dell'ambiente server e sue capacità di elaborazione dati, ecc.

Cioè, se parliamo del sito dell'ortolano sotto casa o di quello che vende le magliette, per cui gli stai realizzando una paginetta ecommerce per organizzarsi le vendite online (è un esempio tra mille), IMHO non ha senso spenderci troppo tempo ad elaborare cose relativamente complesse. A quel punto puoi lasciare le tue 10 chiamate ajax a quel file che te le smista, e che anche se fossero moltiplicate per 10 utenti alla volta, un normale server con un generico servizio hosting multidominio potrebbe tranquillamente riuscire a soddisfare il tipo di esigenza.
 

max1974

Utente Attivo
7 Mar 2013
107
0
16
Ti do alcune informazioni. Le query so tutte indicizzate e filtrate e per questo sono abbastanza veloci, ma parliamo in ordine di numeri di una webapp che potrebbe essere utilizzata contemporaneamente anche da centinaia di persone. Il server dovrò sceglierlo non appena terminata, (se anche su questo sai darmi info lo terrò presente ma considera che lavorerà in intranet privata e server dedicato) come numero di record per tabella si prevedono circa 30 record a utente/mese perciò un migliaio di record al mese (la tabella maggiore), ma non è che tutte le chiamate vadano su questa tabella. Credi che unica chiamata con suddivisione dei dati in un multiarrai unico possa velocizzare il tutto???
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ti suggerisco di scrivere il codice in maniera semplice in modo da semplificare la manutenzione/upgrade successiva
sono molto favorevole ad avere uno script unico che risponde a chiamate ajax diverse quando le risposte siano facili da gestire
il tempo di esecuzione dello script non é certo influenzato dal numero di parametri che riceve
ma dal lavoro che deve compiere per generare la risposta e dalla quantità di dati che ritorna
questo tempo lo avresti con 1 script unico o differenziando gli script
ripeto non starei a cercare sofismi per "risparmiare" il nulla, cercherei solo di scrivere un codice semplice
 

max1974

Utente Attivo
7 Mar 2013
107
0
16
Grazie Marino, il mio modus operandi solitamente è il seguente...dimmi cosa ne pensi.
PHP:
$.ajax({
                 url:"../php/my.php",
                 method:"POST",
                 data:{User_id:sessionStorage.getItem("User_id")},
                 dataType:"Json",
                 success:function(data){
                    if(data.PERC.status == 'success'){
                        $(".badge-perc").show();
                        $(".badge-perc-add").hide();
                      }
                    else if(data.PERC.status == 'error'){
                        $(".badge-perc").hide();
                        $(".badge-perc-add").show();
                      }
                    if(data.TELE.status == 'success'){
                        $(".badge-tele").show();
                        $(".badge-tele-add").hide();
                      }
                    else if(data.TELE.status == 'error'){
                        $(".badge-tele").hide();
                        $(".badge-tele-add").show();
                      }
                    if(data.USERS.status == 'success'){
                        $(".badge-users").html(data.USERS.iTotalRecords);
                        $(".badge-users").show();
                      }
                    else if(data.USERS.status == 'error'){
                        $(".badge-users").hide();
                      }

                 },
            });
MY PHP FILE
Codice:
<?php

include "db_connect.php";

$connect = OpenCon();

  $query = "SELECT * FROM tb_1 WHERE id_user = '".$_POST["User_id"]."' and badge = 1";
                if (!mysqli_query($connect, $query)) {
                  $log_errore = new Errorlog();
                  $log_errore->scrivi('|cod=07.1|'.mysqli_error($connect).'|'.$query);
                  $Values['PERC']= ['status' => 'error',
                             'Message' => 'Errore 07.1 Contattare Amministratore di sistema'];
                }
                else {
                  $result = mysqli_query($connect, $query);
                  if ($result->num_rows > 0) {
                     while($row = $result->fetch_assoc()) {
                           $data[]=$row;
                           }
                     $Values['PERC'] = ['status' => 'success',
                                'Message' => "Elaborazione Avvenuta con Successo",
                                'iTotalRecords' => count($data),
                                'aaData' => $data];
                  }
                  else
                  {
                    $Values['PERC'] = ['status' => 'error',
                               'Message' => 'Nessun Dato Elaborato'];
                  }
                }
      $query = "SELECT * FROM tb_2 WHERE id_user = '".$_POST["User_id"]."' and badge = 1";
                if (!mysqli_query($connect, $query)) {
                  $log_errore = new Errorlog();
                  $log_errore->scrivi('|cod=07.2|'.mysqli_error($connect).'|'.$query);
                  $Values['TELE'] = ['status' => 'error',
                             'Message' => 'Errore 07.2 Contattare Amministratore di sistema'];
                }
                else {
                  $result = mysqli_query($connect, $query);
                  if ($result->num_rows > 0) {
                     while($row = $result->fetch_assoc()) {
                           $data[]=$row;
                           }
                     $Values['TELE'] = ['status' => 'success',
                                'Message' => "Elaborazione Avvenuta con Successo",
                                'iTotalRecords' => count($data),
                                'aaData' => $data];
                  }
                  else
                  {
                    $Values['TELE'] = ['status' => 'error',
                               'Message' => 'Nessun Dato Elaborato'];
                  }
                }
      $query = "SELECT * FROM tb_3 WHERE id_new = 1";
                if (!mysqli_query($connect, $query)) {
                  $log_errore = new Errorlog();
                  $log_errore->scrivi('|cod=07.3|'.mysqli_error($connect).'|'.$query);
                  $Values['USERS'] = ['status' => 'error',
                             'Message' => 'Errore 07.3 Contattare Amministratore di sistema'];
                }
                else {
                  $result = mysqli_query($connect, $query);
                  if ($result->num_rows > 0) {
                     while($row = $result->fetch_assoc()) {
                           $data[]=$row;
                           }
                     $Values['USERS'] = ['status' => 'success',
                                'Message' => "Elaborazione Avvenuta con Successo",
                                'iTotalRecords' => count($data),
                                'aaData' => $data];
                  }
                  else
                  {
                    $Values['USERS'] = ['status' => 'error',
                               'Message' => 'Nessun Dato Elaborato'];
                  }
                }
echo json_encode($Values);
CloseCon($connect);

?>
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
JavaScript:
        if(data.PERC.status == 'success')
..
        else if(data.PERC.status == 'error')
se le condizioni sono 2, perché ripetere l' if ?

in caso di errore, é sicuro il panico generale perché non si conosce la causa, inserisci sempre
JavaScript:
            error:   function() { .... }
 
  • Like
Reactions: max1974

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
432
73
28
Credi che unica chiamata con suddivisione dei dati in un multiarrai unico possa velocizzare il tutto???
Potrebbe ma concordo con marino
non starei a cercare sofismi per "risparmiare" il nulla, cercherei solo di scrivere un codice semplice
Se l'organizzare i dati in un array, e fare un'unica chiamata, ti permette anche di avere un codice pulito e semplice da gestire, allora sì, altrimenti lascia pure le diverse chiamate.

Concordo comunque sul fatto di avere un unico script lato server.

Il server dovrò sceglierlo [...] se anche su questo sai darmi info
Non saprei ma per questo c'è una sezione apposita sul forum, potresti rivolgere lì la tua richiesta :)
 
  • Like
Reactions: max1974

max1974

Utente Attivo
7 Mar 2013
107
0
16
Grazie a tutti mi avete dato delle info molto utili.. siete veramente fortissimi :):):):):):):):):):):)
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Ricreare struttura php+mysql su Xampp Apache 0
G Consigli SEO per scrittura e struttura pagine SEO e Posizionamento 7
V [WordPress] Creare una struttura di articoli da una struttura di cartelle WordPress 1
G inserimento csv in tabella mysql; problema con struttura PHP 11
A Struttura del sito SEO e Posizionamento 0
N Consiglio struttura database WFM Database 1
L Struttura ottimale di un piccolo sito SEO e Posizionamento 8
N Struttura ad Albero di Directory _ PHP PHP 2
W PHP Webservices SOAP, struttura file wsdl XML 4
M [MS Access] Variare struttura tabella dati MS Access 7
elpirata Struttura tabella per inizio nuovo progetto Database 7
M [PHP] struttura ad albero PHP 1
R [PHP] Struttura Database di statistica PHP 4
KILLERIX [PHP] Notifiche utente, connessione database, struttura generale dati PHP 3
M [PHP] Struttura iterativa PHP 2
M [PHP] Algoritmo con struttura iterativa PHP 2
M [PHP] Problema con algoritmo struttura iterativa PHP 2
Giuliana Signorello WP: Creare un booking multi-struttura con area agenzie annessa WordPress 0
G Editare pagine wordpress e struttura dei file WordPress 3
voldemort Scelta Router Professionale per una grande struttura alberghiera Reti LAN e Wireless 5
A struttura database per questionario Database 1
S Struttura database MySQL 8
M classi e struttura directory PHP 1
J [RISOLTO] Struttura pagina con HTML5 e CSS HTML e CSS 7
asevenx struttura DIV realizzata con float: left che si spezza HTML e CSS 3
S non riesco a capire la struttura di questo sito in PHP PHP 0
I Come presentare la struttura dei contentui di un sito? SEO e Posizionamento 2
S Aiuto struttura Database MySQL MySQL 0
L Informazione struttura classe.. Javascript 8
B Form in struttura tabellare HTML e CSS 9
Tsukaima Una struttura da Java Javascript 1
P E/R e struttura DB negozio Database 0
B Consiglio struttura database mysql MySQL 6
L struttura del database (voce: in eccesso su phpmyadmin).. MySQL 2
M Software per Sitemap gratis? ovvero per creare offline la struttura! HTML e CSS 0
W Problema di struttura della chat Ajax 0
B Aiuto struttura tabella mysql nel DB MySQL 10
Y Aiuto per rappresentazione grafica di struttura Categorie sottocategorie - 3 livelli PHP 1
Monital [Mysql]struttura tabell MySQL 2
V Creazione TAG per la Struttura di un sito web HTML e CSS 1
P struttura dati content management system Database 0
D Prestazioni vs Struttura SQL server Database 0
G Struttura ad albero binario PHP 0
G Consiglio per struttura Categorie PHP 2
S [MsSQL > MySQL] Migrazione struttura e dati e' possibile? MySQL 0
H Struttura sito HTML e CSS 4
V visualizzazione struttura in frontpage HTML e CSS 1
D struttura sito flash (era: aiuto!!) Flash 6
Ruhe aiutooooooooo con una struttura per sito di incontri online!! Classic ASP 8
R valore value di un id da passare in chiamata ajax Ajax 3

Discussioni simili