Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    231

    [Ajax - Php] Reperire dati durante l'elaborazione

    ciao a tutti,
    fino ad ora ho utilizzato Ajax per effettuare chiamate asincrone ed avere una risposta finale.

    Adesso, vorrei utilizzare Ajax per effettuare sempre chiamate asincrone ma nel frattempo ricevere informazioni in tempo reale.

    Il classico esempio è l'inserimento di 100.000 record in un db (pagina insDb.php) e nel frattempo farmi stampare in una input un contatore.

    Il primo metodo a partire appena clicco su un qualsiasi pulsante è start():

    Codice PHP:
    function start(){
      
    http.open('POST','insDb.php'true);
      
    http.onreadystatechange getCount;
      
    http.send(null);  

    essa richiama getCount:

    Codice PHP:
    function getCount(){
      if(
    http.readyState == 4){
        if (
    http.status == 200) {
          
    // assegno un semplice testo ad una input al termine dell'operazione
          
    var response http.responseText;
          if(
    response == ''){
            
    document.getElementById('status').value 'Nessuna elaborazione effettuata...';
          }else{
            
    document.getElementById('status').value 'Elaborazione Terminata!!';
          }
        }
      }else{
        
    document.getElementById('status').value 'Elaborazione in corso...';
      }

    e questa è la semplice pagina php (ovviamente richiama classi che gestiscono l'inserimento):

    Codice PHP:
    require_once("include/init.inc.php");
    $limit 100000// 100.000 record da inserire
    $cont 0;
    $aVar['text'] = 'Adesso vediamo cosa succede...';
    $aVar['status'] = 1;
    for(
    $x=0;$x<$limit;$x++){
      
    $objDB->insert($aVar,'count');
      
    $cont++;
    }
    require_once(
    "include/end.inc.php");
    print(
    "cont=$cont"); 
    Avevo pensato di sfruttare la variabile "cont" (riporata sulla pagina PHP), ma come faccio a reperirla sempre in ogni suo stato durante l'inserimento?

    Quale parte del javascript va cambiato?

    pensavo che si potesse cambiare questa riga:

    Codice PHP:
    http.send(null); 
    in

    Codice PHP:
    http.send(cont); 
    ma niente... Qualcuno mi può aiutare?

    Grazie mille e ciao Max
    http://www.mdlwork.com

  2. #2
    Mhh potresti salvarti su un file la percentuale di query eseguite; poi, con un altra chiamata ajax, acquisisce periodicamente (per es. ogni due secondi) il valore di questa percentuale.

    Codice PHP:
    require_once("include/init.inc.php"); 
    $limit 100000// 100.000 record da inserire 
    $cont 0
    $aVar['text'] = 'Adesso vediamo cosa succede...'
    $aVar['status'] = 1
    for(
    $x=0;$x<$limit;$x++){ 
      
    $objDB->insert($aVar,'count'); 
      
    $cont++; 
      if ( (
    $cont%1000) == ) {
        
    $percent $cont $limit 100;
        
    //scrittura su file di $percent
      
    }

    require_once(
    "include/end.inc.php"); 
    print(
    "cont=$cont"); 
    Per la chiamata ajax periodica puoi usare un setInterval.

    Spero ti sia di aiuto

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    231

    per El Pedro

    Ciao El Pedro,
    forse a questo punto si, è meglio, anche perchè voglio monitorare diverse cose (ultimo record inserito, record totali, record scartati, etc etc)...

    Inoltre mi sembra di aver letto che ajax non è in grado di gestire più di due chiamate contemporaneamente (forse dipende dal browser), o sbaglio?

    Comunque ti ringrazio per l'intervento, intanto faccio così, poi se si riesce a trovare un'altra soluzione, meglio
    http://www.mdlwork.com

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 © 2026 vBulletin Solutions, Inc. All rights reserved.