Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254

    problema non indentificato in caricamento pagine

    Buongiorno
    scusatemi se sono stato poco chiaro in oggetto ma il problema è ignoto almeno quanto il suo contesto.

    Succede di rado ma succede.
    In sostanza dopo un certo tempo di attività sulle mia applicazione succede che, al caricamento successivo di una pagina, il browser continua a caricare e non termina il processo di caricamento.

    Se provo a cambiare pagina cambia l'url ma il processo non termina comunque.
    Se guardo in database non ci sono processi che stanno eseguendo query.

    In ogni modo l'unica soluzione per risolvere il problema è chiudere tutte le finestre del browser (proprio tutte). Dopo di che, se accedo alla mia applicazione web, è tutto ripristinato e funzionante.

    Questa cosa succedeva solo se lanciavo script lunghi (es. clonazione di un database e affini), in pratica 1 volta su 10 il database dimostrava che lo script era finito ma la pagina continuava a caricare senza risultato.

    Adesso però succede anche per processi non lunghi ma semplicemente per lunga attività sull'applicazione.

    Io posso pensare ad una cosa sola:

    utilizzando molte variabili di sessione ($_SESSION[qualcosa]) e molto spesso non distrutte provo ad ipotizzare che il browser si ingolfi di variabili (magari superando un limite di memoria, qualora esistesse, nel php.ini) e quindi nasce questo problema. Penso questo perché l'unico modo per ripristinare tutto è quello chiudere tutte le finestre del browser (e
    quindi distruzione delle variabili di sessione).


    Voi avete qualche idea? Vi sarei grato se riuscissimo ad individuare insieme la causa.
    Se qualcosa non è chiaro o c'è bisogno di più indizi per capire chiedete pure.

    Grazie in anticipo.
    Angelo

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Se si tratta di una APP html5 con dei video assicurati che abbiano l'attributo preload="none" altrimenti i browser inizieranno a caricarli prima che l'utente li visualizzi e ciò può causarti proprio il problema di cui parli.

    Se non si trattasse di questo ma del sovraccarico di variabili che ipotizzi ti suggerisco di salvare questi dati in un database tenendo in sessione unicamente le informazioni necessarie per recupeare le variabili della sessione

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Dimenticavo: spezza eventualmente i processi troppo lunghi in più caricamenti e soprattutto
    ottimizza il database creando degli indici sui campi testuali più usati, questo ti ridurrà notevolmente i tempi delle query

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    ciao e grazie della risposta.

    Dunque escludo i video che non ci sono.
    Sui processi lunghi passo oltre in quanto, dovrò prima o poi indicizzare correttamente il database, ma il problema si verifica anche per processi più piccoli.
    Dopo un po' di tempo di attività il sistema si impalla anche se in quel momento ha lanciato l'esecuzione di un piccolo script.

    Sono quasi convinto che il problema siano le sessioni e non posso modificare più di tanto se non sfruttare qualche funzione (classe) ripetuta in tutti i file per andare a cancellare qualche sessione qui e lì. E' una cosa complessa per lo stato in cui si trova la mia applicazione. Sarebbe difficile modificare tremila file.

    Aggiungo un'altra variabile: nelle applicazioni commetto due errori per inesperienza. Non chiudo mail il database e non utilizzo ne costruttori ne distruttori delle classi (e non so neanche come si usano ne a cosa servono).

    Possono essere elementi di disturbo?
    Ritornando alle sessioni, il php.ini ha una variabile che indica la memoria allocata alle sessioni?

    Bisogna, per capire il problema, tenere presente che quando il sistema si blocca (carica all'infinito) i vari sistemi: F5, cambio pagina etc non funzionano. L'unica cosa che funziona è la chiusura di tutte le schede del browser. Per questo sono convinto che siano le sessioni.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Dunque vado sempre per esclusioni, quelle che riesco a fare per la mia poca esperienza:

    - Non è un problema di tempo massimo previsto che il sistema ti segnala con
    "fatal error maximum execution time of 30 seconds exceeded" ho modificato il tempo di esecuzione e comunque lo script non si interrompe e non restituisce tale messaggio.

    Explorer quando carica una pagina mostra una rotellina che gira nella parte sinistra della scheda. Bene, quella rotellina non smette MAI di girare.

    Quindi l'A è escluso a priori. Il B è escluso per metà nel senso che questo blocco può succedere in qualsiasi pagina, anche quelle di cui so per certo che non ci sono redirect o non ci sono pagine inesistenti o non ci sono pagine con errori. Dico metà però perché non so come terminerebbe il caricamento infinito in quanto ho sempre chiuso il browser quando ciò succedeva ma con poca certezza posso avanzare l'ipotesi che la situazione rimarrebbe la stessa all'infinito, ovvero la rotellina che gira.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    C'è qualche chiamata ajax che potrebbe riferirsi a uno script php che non risponde o che è bloccato in un redirect infinito?

    In alternativa ti consiglio di commentare blocchi di codice un po' alla volta per identificare il l'istruzione che causa il problema...

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Si, c'è un setInterval che fa una chiamata Ajax per calcolare il tempo di sessione dell'utente ed eventualmente fa un refresh della pagina in modo che il controllo interno (per ogni pagina) lo butti fuori ma in sostanza ricarica la stessa pagina.

    Mi rendo conto che è più difficile di quello che penso.

    Voi in ogni modo dite che Sessioni, Costruttori e distruttori delle classi (mancanti) e chiusura della connessione del database (mancante) non c'entrano niente?

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Diciamo che è più probabile che sia un problema client-side che uno server-side.

    Hai detto che usi un setInterval per forzare un refresh?
    Già qui c'è qualcosa che non va, nel senso che usi un evento temporizzato (setInterval) per caricare un contenuto dal server.
    Poichè il set interval viene fatto a intervalli regolari mentre il caricamento della pagina non ha durata fissa il problema potrebbe stare proprio qui.
    In altre parole è probabile che il setinterval non aspetti il termine del caricamento di refresh, andando causare dei caricamenti inutili.
    Per prima cosa prova a rimuovere questo setinterval, secondariamente sostituiscilo con un setTimeout che dovrebbe funzionare in questo modo:
    -carico la pagina
    -settimeout
    -refresho la pagina
    -quando il caricamento è finito, settimeout e ricomincio.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Ok provo.
    Comunque il flusso è:

    carico pagina -> lancio il setTimeout al caricamento che esegue ogni 10 secondi una funzione javascript che attraverso una chiamata Ajax controlla se il tempo di sessione dell'utente è stato superato.

    - in caso positivo ricarica la pagina ed il controllo interno (php) della pagina esegue il log out ed in questo caso il setTimeout non viene rieseguito.
    - in caso negativo la pagina non viene ricaricata e la funzione javascript continua la sua esecuzione ogni 10 secondi.

    Funzionerebbe? Col setTimeout invece che con il setInterval?

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    in caso negativo la pagina non viene ricaricata e la funzione javascript crea un'altro settimeout che richiama la funzione 10 secondi dopo la risposta alla chiamata ajax

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.