Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Json e php, non lavora per dati grandi

    Salve,
    dopo aver cercato invano mi trovo a postare questo problema:
    utilizzo json, php e mysql per estrarre i dati con php dal database mysql e passarli nel formato json a un file che utilizza jquery.
    Se estraggo dati per esempio 5000 righe va tutto bene ma se estraggo 50000 righe il file php che si occupa dell'estrazione e quindi della trasformazione in json si interrompe con la dicitura "Alowed memory...."
    ora mi chiedo una semplice estrazione dal database e la trasformazione in json con json_encode per 50000 record può dare questo problema?
    Da cosa può dipendere questo prosciugamento di memoria?
    Considerate che tutte le altre pagine non danno problemi solo qui c'è l'intoppo della memoria
    grazie

  2. #2
    beh lo script usa memoria per compiere l'encoding in json, quindi può essere che oltre un certo dato con la tua configurazione la finisca. aumenta la memoria di esecuzione nel php.ini o nella pagina in questione
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Ciao, grazie per la risposta ma rimane sempre lo stesso messaggio anche aumentando la memoria,
    "Allowed memory size of 134217728 bytes exhausted" cambiano solo i bytes se aumento la meoria queslli in rosso
    se può essere d'aiuto metto il codice che utilizzo semplice semplice:

    Codice PHP:
    $stringa_flag mysql_real_escape_string(substr($_GET['id'],0,-1));
    $select "SELECT id,cognome, nome FROM archivio WHERE codice IN ($stringa_flag) ORDER BY cognome, nome ASC";
    $resultst mysql_query($select);
    $totale=mysql_num_rows($resultst);
    $i=0;
    echo
    '{"elenco":[';
     while(
    $row mysql_fetch_assoc($resultst)){
             
    $i $i 1;
             echo 
    json_encode($row);
             if (
    $totale != $i) {
                 echo 
    ','
             }
     } 
    //while
    echo ']}'
    questo file è chiamato con $.getJSON,
    se ci sono altre soluzioni ben vengano, se considero che il numero di record potrebbe aumentare nel tempo e da 50000 passare a 100000 o più sono fritto!!!
    Grazie

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    A me sembra strano che sia colpa di json_encode...visto che lo chiami su una singola riga.
    Hai provato ad usare mysql_unbuffered_query() invece di mysql_query() ?

    Cmq una soluzione può essere quella di paginare i rusultati, invece di prenderli tutti insieme.

    Oppure puoi fare un ciclo di $.getJSON, prendendo prima le prime 5000 righe, poi le successive 5000, etc. alla fine unisci tutto (sempre lato client)

  5. #5
    Ho fatto una prova direttamente da phpmyadmin, ho inserito la query nella tab sql e questo è il risultato ( 59,052 totale, La query ha impiegato 0.1228 sec), ho tolto json_encode dal file sopra ma continua a darmi i soliti problemi, non capisco dove sta l'errore!?!? Non riesce ad estrarre nemmeno i record senza json_encode!?!

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    come ti ho scritto sopra, hai provato mysql_unbuffered_query() invece di mysql_query() ?

  7. #7
    Si ma sono sempre li con lo stesso problema!!!

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Allora, non puoi paginare i risultati?

  9. #9
    La chiamata $.getJSON va a popolare una select!!! Tu mi dirai ma con 50000 voci che te ne fai? purtroppo serve un elenco così lungo e completo.

  10. #10
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    il browser non riesce a gestire una select option con una mole di dati del genere.
    Trova un'altra soluzione.
    Che mestiere difficile.....essere da soli ancora di più

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.