Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Richiamare una funzione e passarla a jquery

    Buon giorno.
    Sto rivedendo attraverso la programmazione ad oggetti, ciò che facevo in modo procedurale.
    Ho una query che estrapola 2000 record, e a loro volta vengono paginati 50 per pagina.
    Nella pagina dati.php, avevo la query e la paginazione insieme, quindi passando i parametri come di seguito, andavo a richiamare la medesima pagina dati.php?pag=2, e mi restituiva i dati della seconda pagina.
    Questo finché erano pochi record e finché era procedurale tutto ok.
    codice:
    <script>
    function cPage(p){
    	$('#cercaFile').load('dati.php?pag='+p+'&cond=<?php echo $cond;?>');
    }
    </script>
    Ora mi sono accorto che c'è un fortissimo rallentamento.
    Eseguendo la query all'interno di HeidiSql mi restituisce i 2000 record in meno di 2 secondi.
    Invece da script, ci mette quasi 10 secondi, il che è improponibile.
    Ho visto che diminuendo il numero di record per pagina, il tempo di caricamento si riduce a soli 4 secondi.
    Domande:
    1) utilizzando lo script di cui sopra, anche se cambio pagina 2,3,4 , riesegue la query ogni volta?
    2) ora nel file function.php, ho classi e metodi, che richiamo istanziando nuovi oggetti, come di seguito per ottenere dal metodo che contiene la query, la tabella html dei record
    Codice PHP:
    echo  "<div id='elenco'><h4><i class='icon-list'></i> Elenco dati</h4>";
    $DWH->elenco_dati($codUfficio,$conloc_id,$cond,$f_TIPPRA,$f_UTENT,$f_TIPO);
    echo 
    "</div>"
    3) vorrei far in modo di evitare di rieseguire la query ogni volta che clicco su una pagina successiva e/o precedente. Cioè, la paginazione dovrebbe interagire con i dati estrapolati nella prima esecuzione, senza dove ricaricare e rieseguire il tutto.
    E' possibile?
    Grazie.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    1) utilizzando lo script di cui sopra, anche se cambio pagina 2,3,4 , riesegue la query ogni volta?
    Si
    3) vorrei far in modo di evitare di rieseguire la query ogni volta che clicco su una pagina successiva e/o precedente. Cioè, la paginazione dovrebbe interagire con i dati estrapolati nella prima esecuzione, senza dove ricaricare e rieseguire il tutto.
    E' possibile?
    ...
    Potresti mettere in sessione il risultato di una query che prende tutto e poi eseguire la paginazione sull'array in sessione, non so in termini di velocità quanto ci guadagni, fa una prova e vedi.
    L'idea è che dovrebbe funzionare così:
    - arriva la richiesta per i dati
    - lo script verifica se esiste in sessione una entry con i risultati di una precedente query corrispondente
    -- se il risultato esiste lo prende, vede che pagina vuoi e seleziona i record giusti da restituire
    -- se il risultato non esiste esegue la query e genera la entry in sessione e fa quanto detto sopra

    Questo ovviamente se la query è senza WHERE, nel caso il WHERE sia richiesto la cosa si complica, dovresti verificare e se serve inserire in sessione una entry per i risultati di ogni valore del WHERE che arriva allo script.
    In questo caso ti conviene cercare ed integrare qualche sistema di caching già fatto e testato, che sicuramente sarà più efficiente di uno improvvisato.
    Ultima modifica di Alhazred; 22-10-2015 a 11:47

  3. #3
    si il WHERE c'è.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.