Visualizzazione risultati 1 fino 7 di 7

Discussione: AJAX: ricevere output prima della fine dello script PHP

  1. #1
    ricvail non è connesso Neofita
    Data registrazione
    28-04-2012
    Messaggi
    4

    Predefinito AJAX: ricevere output prima della fine dello script PHP

    Questa è la struttura della mia applicazione:

    1) Il codice JS sul client richiede la pagina foo.php sul server (con AJAX, per intenderci)

    2) La pagina foo.php stampa (con echo() o flush() o come volete) le informazioni richieste dal client, SUBITO (perchè ho bisogno di FPS più alti possibile), quindi l'eventHandler onReadyStateChange del client viene eseguito

    3) ALTRE istruzioni contenute in foo.php vengono eseguite sul server.
    Queste ultime istruzioni nello specifico non comportano un output, si tratta semplicemente di aspettare che una determinata riga del database venga aggiornata da un altro utente, e se succede lo script termina, altrimenti se non succede entro tot secondi si dovrà modificare un'altra riga del database, e poi lo script termina.


    Ho provato ad usare ob_start() con flush(), o ob_flush(), o anche ob_implicit_flush(1), ma non funzionano con le pagine normali, figurarsi con le richieste AJAX... (nel senso che l'output viene comunque trasmesso tutto alla fine, come se non li usassi)
    Qualcuno ha qualche idea?

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    PHP non può sapere come sta andando una richiesta Ajax né interagire con essa.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    ricvail non è connesso Neofita
    Data registrazione
    28-04-2012
    Messaggi
    4

    Predefinito

    Infatti "onReadyStateChange" è una proprietà dell'oggetto request, sul client, in JS.
    Il PHP comunque c'entra eccome con una richiesta Ajax, dato che richiedo appunto una pagina PHP. Mi serve che quella pagina "scriva" quello che deve scrivere e poi non termini subito, ma faccia ancora qualcos'altro.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Non puoi semplificare spezzando il "qualcos'altro" in un'altra pagina PHP? (anche la stessa, ma con parametri GET/POST che specificano cosa fare).

    Citazione Originalmente inviato da ricvail Visualizza messaggio
    2) SUBITO (perchè ho bisogno di FPS più alti possibile),
    Sicuro che ad ogni frame intendi fare una richiesta ajax?

    Ciao!
    Ultima modifica di alemoppo : 13-06-2013 alle ore 17.56.55

  5. #5
    ricvail non è connesso Neofita
    Data registrazione
    28-04-2012
    Messaggi
    4

    Predefinito

    Ci ho pensato, ma allora come faccio ad essere certo che il mio codice JS non venga modificato in modo da eseguire una richiesta e non l'altra?
    Perchè se eseguissero solo la prima o solo la seconda parte avrei un problema di sicurezza molto grave.
    Ultima modifica di ricvail : 13-06-2013 alle ore 17.58.51

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    lato server.... salvando ad esempio in una sessione se è stato eseguito il sorgente prima di eseguire quello successivo...

    Ciao!

  7. #7
    ricvail non è connesso Neofita
    Data registrazione
    28-04-2012
    Messaggi
    4

    Predefinito

    Potrebbe funzionare... sarà un po' incasinato ma come soluzione promette bene.
    Grazie :)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •