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

    Ajax, impossibile attendere oltre 30 sec

    E' possibile fare attendere una richiesta fatta al db tramite Ajax oltre i 30 secondi?

    Mi spiego meglio, ho una query con circa 70 record, ogni record ha un campo data che viene passato ad una funzione per effettuare un controllo, fin quando chiedo la stampa di una parte dei record tutto ok, ma quando chiedo l'elenco completo questa impiega più di 30 secondi e va in errore:

    Fatal error: Maximum execution time of 30 seconds exceeded

    Come posso risolvere? penso sia per motivi di sicurezza di Ajax ma devo cmq risolvere. Se la richiesta viene fatta senza passare per Ajax tutto ok ma così vedo solo una pagina bianca e non più il messaggio di attesa.

    Grazie,
    ciao.

  2. #2
    Fatal error: Maximum execution time of 30 seconds exceeded

    Questo é un messaggio di errore di PHP, quindi il problema é lato server.

    Se tu temporizzi correttamente la chiamata ajax (ad esempio con SetInterval()), questa avviene lato client.

    Fai vedere un po' di codice e ne sapremo di più
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    concordo che da quel che sembra è un problema di PHP... pare che lo script impiegi oltre il tempo massimo di 30" standard per l'esecuzione (che per il numero di record indicati appare comunque eccessivo...) nel qual caso potresti provare in cima allo script uno

    Codice PHP:
    set_time_limit(60); 
    per impostare 60" o oltre... fermo restando che 30" sono già tanti... forse andrebbe rivisto lo script

  4. #4
    No, dai. 70 record é una questione di qualche millesimo di secondo. E' l'impostazione che é problematica e non é aumentando il tempo massimo di esecuzione (ammesso che sia possibile farlo) che si possa risolvere qualcosa.

    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    già... sono troppi 30"... non è che va in un loop infinito?

  6. #6
    Il problema di tutto è questo script:

    Codice PHP:
    function calcola_gg($data_manutenzione)
    {
        
    $dal $data_manutenzione;
        
    $al date("d/m/Y");

        
    $data_dal explode('/'$dal);
        
    $data_al explode('/'$al);

        
    $ts_da mktime(000$data_dal[0], $data_dal[1], $data_dal[2]);
        
    $ts_a mktime(000$data_al[1], $data_al[0], $data_al[2]);

        for (
    $x $ts_da$x <= $ts_a$x += 86400) {
            
    $giorni[] = date('d/m/Y'$x);
        }

        
    $totale count($giorni)-1;

        if(
    $totale >= && $totale 30) {
            
    $gg '[img]images/pallino_verde.gif[/img]';
        } elseif (
    $totale >= 30 && $totale 60 ) {
            
    $gg '[img]images/pallino_giallo.gif[/img]';
        } elseif (
    $totale >= 60) {
            
    $gg '[img]images/pallino_rosso.gif[/img]';
        }
        return 
    $gg;

    ma avendo messo adesso set_time_limit(0); prima dello richiesta al db funziona, ma impiega ben 120secondi esatti prima di restituirmi i record, troppo lunga l'attesa.

    L'errore di cui al post precedente fa riferimento a questo ciclo:
    for ($x = $ts_da; $x <= $ts_a; $x += 86400) {
    $giorni[] = date('d/m/Y', $x);
    }


    ho messo la funzione SetInterval() nella pagina ajax prima della chiamata ma niente da fare.

    Se invece non passo da ajax ma faccio la chiamata alla pagina alla vecchia maniera, tramie action form, allora tutto ok.

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