La questione sorta di dice tutto - c'è una funzione che fa la stessa cosa come il JavaScript funzione setTimeout() per PHP? Ho cercato php.net, e non riesco a trovare alcun ...Esiste una funzione simile a setTimeout() (JavaScript) per PHP?
risposta
Non c'è modo di ritardare l'esecuzione di parte del codice di nello script corrente. Non avrebbe molto senso, poiché l'elaborazione di uno script PHP avviene interamente sul lato server e si ritarderebbe solo l'esecuzione complessiva dello script. C'è sleep()
ma questo interromperà semplicemente il processo per un certo tempo.
È possibile, naturalmente, programmare uno script PHP da eseguire in un momento specifico utilizzando i lavori cron e simili.
È un po 'difficile da spiegare - quello che volevo era esattamente mettere in pausa la sceneggiatura :) Fondamentalmente quello che voglio fare è "scherzare" con uno dei miei amici. Ho inserito un input in cui digiti il tuo nome e quando invii una chat room è simulata e per renderla più realistica voglio che i messaggi dello sconosciuto, il mio amico stia "parlando", per apparire uno per uno se sai cosa intendo :) – Latze
Gli eventi a tempo non hanno senso perché lo script viene eseguito sul lato server? Non sto seguendo l'argomento. Certamente sono meno utili in PHP a causa dell'assenza di concorrenza, ma è importante avere uno script che faccia qualcosa dopo un certo periodo di tempo o in un certo istante. – Artefacto
@Latze sembra qualcosa che vorresti fare usando JavaScript sul lato client, vero? –
C'è la funzione sleep
, che mette in pausa lo script per un determinato periodo di tempo.
Vedere anche usleep
, time_nanosleep
e time_sleep_until
.
sarebbe ancora bello simulare questo tipo di codice in php: http://hastebin.com/rujakezuco.lisp. il sonno sta bloccando, i timeout non lo sono. – Dmitry
PHP non è gestito da eventi, quindi un setTimeout non ha molto senso. Puoi certamente imitarlo e in effetti qualcuno ha scritto un Timer class che potresti usare. Ma farei attenzione prima di iniziare a programmare in questo modo sul lato server in PHP.
Ma php ha gli strumenti per far sì che il tuo script specifico sia guidato dagli eventi. es. eseguendo php tramite console potresti voler programmare più eventi in momenti diversi, a questo punto ha perfettamente senso avere timeout. – Dmitry
Non proprio, ma si potrebbe provare il tick count function.
A meno che non stiate utilizzando AJAX per avere richieste live
, PHP non sarebbe la lingua preferita per questo problema. Script PHP non hang
e attendere un'altra risposta. Non sono persistenti. Javascript sarebbe richiesto.
Anche per uno scherzo, una funzione javascript AJAX accoppiato con uno script PHP per analizzare l'input e rispondere di conseguenza sarebbe esattamente quello di cui avresti bisogno. Si potrebbe anche abbinare questo con la funzione sleep
in PHP per renderlo più realistico. Inoltre, vorrei preparare una serie di diverse istruzioni da analizzare per il server, si potrebbe arrivare fino a impostare la quantità di sleep
tempo richiesto per ogni istruzione. Per esempio:
Database MySQL ESEMPIO:
| ID | SLEEP | STATEMENT |
| 1 | 3 | Hello |
| 2 | 10 | I have been alright, nothing new. |
| 3 | 20 | This is a really long message that takes 20 seconds to type |
Così si potrebbe analizzare come segue:
$query = mysql_query("SELECT * FROM `responses` WHERE `id`='3'");
$array = mysql_fetch_array($query);
sleep((int)$array['sleep']); //convert sleep time to integer, sleep.
die($array['statement']); //print the statement back to AJAX function
se avete bisogno di fare un'azione dopo l'esecuzione del codice php si può fare con un'eco
echo "Success.... <script>setTimeout(function(){alert('Hello')}, 3000);</script>";
così dopo un certo tempo nel client (browser) si può fare qualcos'altro, come un reindirizzare ad un altro script php per esempio o echo un avviso
http://php.net/manual/en/class.evtimer.php è probabilmente quello che stai cercando, puoi avere una funzione chiamata durante intervalli impostati, simile a setInterval in javascript. è un'estensione pecl, se hai whm/cpanel puoi facilmente installarlo attraverso la pagina di installazione software/estensione di pecl.
Non avevo notato questa domanda è del 2010 e la classe di evtimer ha iniziato a essere codificata nel 2012-2013.così come un aggiornamento a una vecchia domanda, ora c'è una classe che può farlo in modo simile a javascripts settimeout/setinterval.
Un paio di cose che mi piacerebbe notare su timer in PHP:
1) Timer in PHP ha senso se usato in script di lunga durata ( demoni e, forse, negli script CLI). Quindi, se non stai sviluppando questo tipo di applicazione, non hai bisogno di timer.
2) I timer possono essere bloccanti e non bloccanti. Se si utilizza sleep()
, si tratta di un timer di blocco, poiché lo script si blocca solo per un periodo di tempo specificato. Per molte attività, i timer di blocco vanno bene. Ad esempio, l'invio di statistiche ogni 10 secondi. E 'ok per bloccare lo script:
while (true) {
sendStat();
sleep(10);
}
3) timer non bloccante ha senso solo in applicazioni event-driven, come websocket-server. In tali applicazioni, un evento può verificarsi in qualsiasi momento (ad es. Connessione in ingresso), quindi non è necessario bloccare l'app con sleep()
(ovviamente). Per questo scopo ci sono librerie ad anello di eventi, come reactphp/event-loop, che consente di gestire più flussi in modo non bloccante e ha anche funzionalità timer/intervallo.
4) Sono possibili timeout non bloccanti in PHP. Può essere implementato tramite la funzione stream_select()
con parametro timeout (vedere come è implementato in reactphp/event-loop StreamSelectLoop::run()).
5) Ci sono estensioni PHP come libevent
, libev
, event
che permettono l'attuazione timer (se si vuole andare Hardcore)
- 1. Esiste una funzione javascript integrata simile a os.path.join?
- 2. Esiste una funzione Javascript simile alla funzione Contatore Python?
- 3. JavaScript setTimeout setInterval all'interno di una funzione
- 4. funzione simile esplodere php in javascript?
- 5. Analogo PHP di funzione simile a mysql
- 6. Esiste una funzione simile a getElementsByTagName() per le variabili stringa javascript?
- 7. Esiste una funzione simile a "andmap" in clojure?
- 8. Esiste un limite per setTimeout?
- 9. Routing URL simile a Django per PHP
- 10. variabili JavaScript undefined all'interno della funzione setTimeout
- 11. Panda: funzione simile a grep
- 12. JavaScript setTimeout non può accedere variabile funzione
- 13. Esiste una libreria simile a lxml o nokogiri per Java?
- 14. Esiste una console interattiva simile a Python per Java?
- 15. setTimeout su Funzione asincrona
- 16. Esiste qualche funzione in Perl simile a GetType() in C#?
- 17. Esiste qualcosa di simile a gsub in javascript?
- 18. Esiste una funzione simile alla coalesce in Excel?
- 19. Esiste una funzione "mappa" in php?
- 20. Esiste un'interfaccia simile a ISet?
- 21. "Home" di Javascript simile a python.org?
- 22. Esiste una funzione equivalente PHP per Python os.path.normpath()?
- 23. setTimeout con Loop in JavaScript
- 24. Qualcosa di simile a Hibernate in PHP?
- 25. Esiste uno script/strumento JAVADOCS simile per i file Javascript?
- 26. Postgresql - funzione simile a concat_ws?
- 27. JavaScript: dichiarazione simile a IIF
- 28. SetTimeout non ritardare una chiamata di funzione
- 29. usando setTimeout sincrono in JavaScript
- 30. setTimeout e "this" in JavaScript
@KennyTM - Perché è importante ...? – Alexander
@TheLife in modo che le persone possano trovare una soluzione reale per il problema dell'OP? :) –