Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Ajax Lento ??

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90

    Ajax Lento ??

    Salve ragazzi, io ho il seguente codice nel file index.php :

    codice:
    ..........
    <script type="text/javascript" src="js/jquery.min.js"></script>
    ........
    <script language="JavaScript">
    	function aggiorna() {
    		$.get('source/webcam1.php', function(data) {
    			$('#web1').html(data);
    			document.images['webcam1'].src= 'snap1/'+document.getElementById('web1').innerHTML;
    		});
    
    	}
    </script>
    ..........
    [img]img/loading.gif[/img]
    .................
    <div style="display:none;" id="web1"></div>
    ........
    Mentre il file che richiamo tramite ajax è :

    codice:
    <?php
    $file = scandir('../snap1/');
    echo $file[count($file)-2];
    exit();
    ?>
    In pratica prendo un'immagine che una webcam invia nell'ftp ogni secondo.
    L'immagine non ha mai sempre lo stesso nome ed è per questo che mi ritrovo a fare tutto ciò.
    Ora, il problema è che mi sono accorto tramite l'utilizzo degli alert che la funzione aggiorna() parte senza problemi, ma la chiamata al file webcam1.php fatta con ajax avviene dopo un'altro secondo.
    Per farvi capire meglio :
    Tempo trascorso : 1 secondo - Parte aggiorna()
    Tempo trascorso : 2/3 secondi . Avviene la chiamata da ajax al file webcam1.php
    Tempo trascorso : Subito dopo . Avviene tutto il resto.

    Quindi è il secondo passo dove si perde troppo tempo e questo comporta la perdita di visualizzazione di diverse immagini.
    Infatti, invece di visualizzare la n°1,poi la n°2 visualizza la n° 1, poi la 4°, poi la 6°..
    Come si potrebbe evitare tale perdita di tempo ??
    Grazie

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    tu imposti il timeout su un tempo costante quando invece lato server l'operazione di invio dati al client avviene almeno in 3 secondi

    secondo me ti conviene togliere il settimeout del tutto e chiamare la funzione di aggiornamento quando la chiamata precedente è stata completata
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90
    Cavolo non c'avevo pensato !!
    Grazie..ma comunque mi rimane il problema..
    Con JS non posso neanche eliminare il file webcam1 dato che non ha la possibilità di leggere i file in una cartella..Non c'è proprio modo per eliminare il file php ed usare qualcosa lato client o cmq qualcosa di più veloce ??

    Thanks

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il motivo per cui la risposta è lenta dipende dal server che elabora la risposta e la invia
    secondo me la lentezza dipende dall'esecuzione dell'istruzione scandir

    forse potresti usare un altro sistema (tutto da verificare): potresti fare in modo di usare le chiamate ajax per mantenere la cartella snap1/ sempre con una sola immagine che ha lo stesso nome

    supponi di avere la cartella snap1 vuota allo stato iniziale
    prima o poi verrà inserita un'immagine e la tua chiamata ajax potrebbe invocare uno script che esegue SOLO un mv quell'immagine con un nome costante (es. webcam.jpg)

    lato client dovrai

    - far partire un timeout che forza il ricaricamento della stessa immagine
    ovvero document.images['webcam1'].src = 'snap1/webcam.jpg' + (new Date()).getTime() o analogo per forzarne il refresh

    - chiamare ogni tot secondi lo script che rinomina l'immagine da *.jpg a webcam.jpg (ammesso che questa operazione sia più veloce dello scandir)
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90
    mmm..
    Idea interessante, ma comunque rimarrebbe abbastanza lenta..
    Dovrei prima di tutto cancellare ogni volta tutti i file che ci sono nella cartella tranne l'ultimo inserito, poi dovrei rinominarlo..Pensa che la cancellazione di tutti i file sia ancor più lenta dato che dovrei aprire la cartella, leggerli e cancellarne uno ad uno..

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90
    Eccomi..dunque..
    ho fatto una prova, ho inserito un alert nell'head del file "webcam1.php" .
    Tale alert parte parecchio tempo dopo la chiamata della funzione "aggiorna()"..
    Quindi penso che la lentezza dipende invece dalla chiamata ajax

    EDIT : OPs, scusate per il doppio post

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.