Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30

Discussione: funzione di wait

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    51

    funzione di wait

    Ciao a tutti,
    ho bisogno di fare una cosa del genere

    ciclo_infinito
    fai qualcosa
    aspetta 10 secondi


    mi servirebbe qualcosa per aspettare i dieci secon*no aspetta aspetta aspetta, lo so che c'è la funzione sleep(int seconds). il problema è che non funziona come dovrebbe...

    se ad esempio voglio fare
    Codice PHP:
    echo "3...";
    sleep(1);
    echo 
    "2...";
    sleep(1);
    echo 
    "1...";
    sleep(1);
    echo 
    "BOOM!"
    Non funziona: aspetta 3 secondi e mi da tutto l'output di botto.
    Idem per quanto riguarda metterlo dentro un ciclo...
    esistono soluzioni eleganti al problema? grazie mille...

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    non lo puoi fare così
    o fai tutto lato client oppure usi ajax
    ho fatto una cosa del genere tempo fa te l'ho adattata alla tua richiesta
    crei tre file

    prova.php
    Codice PHP:
    <html>
    <
    head>
    <
    title>Prova</title>
    <
    script type="text/javascript" src="prova.js"></script>
    </head>
    <body>
    <div id="divout">
    </div>

    </body>
    </html> 
    prova.js
    Codice PHP:

    var currentPage ""

    function 
    AjaxRefresh(id){  

    var 
    xmlHttp;
    var 
    ciccio=0
        try{      
            
    xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari  
        
    }  
        catch (
    e){  
            try{  
                
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer  
            
    }  
            catch (
    e){  
                try{  
                    
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  
                }  
                catch (
    e){  
                    
    alert("AJAX not found!");  
                    return 
    false;  
                }  
            }  
        }  

    xmlHttp.onreadystatechange=function(){  
        if(
    xmlHttp.readyState==4){  
           if (
    currentPage!=xmlHttp.responseText){ 
            var 
    risposta=xmlHttp.responseText;
                    
    //var risposta='ciao';
                    
    if(risposta[0]!='')
                       
    document.getElementById('divout').innerHTML=document.getElementById('divout').innerHTML+'
    '
    +risposta;  
                       
    //currentPage=xmlHttp.responseText; 
            //alert(id); 
                    
    id=risposta;
            
    //alert(risposta);
            
    if(risposta!='BOOM')
            {
                           
    setTimeout('AjaxRefresh('+id+')',1000); 
                    }
           }  
        }  
    }  
    //alert('we');
    //var id=0;
    xmlHttp.open("GET","richiedimsg.php?id="+id);
    xmlHttp.send(null);  
    }  

    window.onload=function(){  
        
    setTimeout('AjaxRefresh(0)',1000);  


    richiedimsg.php
    Codice PHP:
    <?php 
    $id
    =$_GET['id'];

    if(
    $id<=2)
    {
      echo (
    $id+1);
    }
    else
    {
      echo 
    "BOOM";
    }
    ?>
    poi dal browser richiama prova.php

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    te facevi conto alla rovescia io ho fatto conto in avanti ma il concetto è questo

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    51
    ehm...
    non c'è un modo più semplice? XD

    ti dico cosa fa esattamente la mia applicazione...

    c'è un database che contiene queste tabelle
    members
    posts
    comments
    queue_posts
    queue_comments

    c'è il file member_index.php che

    - prende i dati da posts e da comments e li visualizza
    - ci sono dei form per inserire dati nelle tabelle queue_posts e queue_comments

    poi c'è un file synchro.php (che è quello per cui mi serve fare questa cosa) che dovrebbe, ogni tot secondi,

    - accedere a facebook
    - prendere i dati inseriti nelle tabelle queue_posts e queue_comments, inviarli a facebook, e svuotare queste tabelle
    - prendere tutto il feed di un gruppo di facebook
    - svuotare le tabelle posts e comments
    - inserire nelle tabelle posts e comments il feed di facebook



    considera che funziona tutto tranne il fatto dello sleep , e che javascript lo uso già per collegarmi a facebook... è possibile usare più script javascript nella stessa pagina?

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    allora mi sa che ajax (vedi mio esempio) sia unica soluzione

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    51
    Anyway, potrei fare un file synchro.php che si collega a facebook e carica quel codice javascript, ed un file synchro_routine.php che si smazza il tutto...

    grazie mille, ora provo

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    cmq il concetto è semplice, fare una get tramite ajax e refreschare ogni tot (nel mio caso 1 secondo)

    GET
    xmlHttp.open("GET","richiedimsg.php?id="+id);
    xmlHttp.send(null);

    PROCESSARE RISPOSTA DEL GET
    if (currentPage!=xmlHttp.responseText){
    var risposta=xmlHttp.responseText;
    //var risposta='ciao';
    if(risposta[0]!='')
    document.getElementById('divout').innerHTML=docume nt.getElementById('divout').innerHTML+'
    '+risposta;

    EVENTUALMENTE O SE VUOI ANCHE SEMPRE FARE REFRESH (time in millisecondi)
    if(risposta!='BOOM')
    {
    setTimeout('AjaxRefresh('+id+')',1000);
    }

  8. #8
    Originariamente inviato da hdmi
    Anyway, potrei fare un file synchro.php che si collega a facebook e carica quel codice javascript, ed un file synchro_routine.php che si smazza il tutto...

    grazie mille, ora provo
    non ho capito un'acca di tutto il problema, però ricordati una cosa: una volta che l'output arriva l'utente, php ha già finito di girare da circa 1/2 secondi...quindi è inutile che speri di fare uno script con sleep/wait o come ti pare a te... come ti hanno detto, usa ajax
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    51
    Posso chiedere gentilmente se mi scrivete una funzioncina in ajax che mi permette di fare un ciclo infinito con refresh ogni 10 secondi?
    Non ci capisco una mazza di javascript, non ho il tempo di impararlo e l'unico ajax che conosco è la squadra di calcio...
    (sono nel bel mezzo di una tesi)

    grazie mille!

  10. #10
    Originariamente inviato da hdmi
    (sono nel bel mezzo di una tesi)
    e andiamo su, stai pure a fare una tesi e ti blocchi così? spero solo che non sia di ambito informatico...

    Codice PHP:


    function refreshPost(){

     
    //...eh eh eh, questa però te la scrivi da solo
    ..
    ..

    //la ripeto ogni 10 secondi
    setTimeout("refreshPost()",10000);
    }


    window.onload = function(){
     
    refreshPost();
    }; 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.