Ho uno script che utilizza while(true)
da eseguire in modo che venga eseguito per sempre finché non muore. Voglio essere in grado di far risuonare qualcosa una volta ogni 4 minuti, come posso fare questo? Lo script viene eseguito al prompt dei comandi e utilizza while(true)
, quindi è confuso e non sono sicuro di come farlo farlo ogni 4 minuti. Come faccio a farlo eco qualcosa una volta ogni 4 minuti mentre ancora in un while(true)
?Come eco ogni 4 minuti mentre si è in un ciclo infinito
risposta
Si può provare
while(true)
{
sleep(240); // sleep for 240 sec
echo " Hello World" ;
}
O
$time = time();
while (true) {
/*
* Play Some Ball
*/
if ((time() - $time) >= 240) {
echo date("Y:m:d g:i:s"), PHP_EOL;
$time = time();
}
sleep(2);
}
Test uscita con Time = 2 sec, Sleep = 1 sec
2012:10:14 12:50:56
2012:10:14 12:50:58
2012:10:14 12:51:00
2012:10:14 12:51:02
2012:10:14 12:51:04
2012:10:14 12:51:06
2012:10:14 12:51:08
2012:10:14 12:51:10
2012:10:14 12:51:12
2012:10:14 12:51:14
Non riesco a farlo dormire perché ne ho bisogno attivo. –
Consiglierei sempre un piccolo sonno su un circuito chiuso che funzionerà per sempre. Questo o qualche altro metodo di rendimento per evitare un ciclo che consuma tutto. – jheddings
@jheddings sono totalmente d'accordo con te ... Bello uno – Baba
Prova ad aggiungere in un ciclo di funzione del parametro while(true) { ... }
sleep().
$sleep = 4*60;
while(true)
{
# waiting...
sleep($sleep);
# work after 240 mins
}
Utilizzando un metodo sleep effettivamente fermare lo script l'esecuzione. Non sono al 100% se questo è ciò che vuoi che accada.
Un altro modo per attaccare questo problema sarebbe quello di confrontare i timestamp dall'ultimo comando "echo" su ogni iterazione.
$echo_time = time();
$interval = 4*60;
while(true){
if ($echo_time + $interval >= time()){
echo "$interval seconds have passed...";
$echo_time = time(); // set up timestamp for next interval
}
// other uninterrupted code goes here.
}
Questo permetterà il codice all'interno del tuo ciclo per continuare l'esecuzione e selezionare solo i tempi all'inizio di ogni iterazione.
In php7 'echo" $ intervallo di secondi sono passati ... "; ' dovrebbe essere: ' echo $ intervallo. "secondi sono passati ..."; ' Oppure: ' echo $ interval. 'secondi sono passati ...'; // quot singolo è più veloce del doppio quot – jagb
- 1. StreamReader.ReadLine si bloccherà in un ciclo infinito
- 2. Ciclo infinito in EventQueue.isDispatchThread()
- 3. Come replicare mentre si è in viaggio?
- 4. Come prevenire un ciclo infinito in ASP.net
- 5. È possibile portare GCC in un ciclo infinito?
- 6. PHP: come si determina ogni ennesima iterazione di un ciclo?
- 7. Terminare un ciclo while infinito
- 8. Creazione di un ciclo infinito
- 9. Ciclo infinito quando si utilizza loadView
- 10. uccidendo un ciclo infinito in Java
- 11. Ciclo infinito di layoutAttributesForElementsInRect
- 12. C# galleggiano ciclo infinito
- 13. Errore, ciclo infinito
- 14. Javascript eredità ciclo infinito
- 15. Come evitare il ciclo infinito Storyboard modale
- 16. ODP.NET Managed ConnectionPool si chiude/si apre ogni 3 minuti
- 17. d == 9000000000000000000d ciclo infinito
- 18. Per ciclo continuo mentre ciclo in R
- 19. Ripeti rapidi TakeWhile provoca un ciclo infinito
- 20. ciclo infinito nella programmazione funzionale?
- 21. Crontab ogni 5 minuti
- 22. Come rompere un infinito per il ciclo (;;) in C?
- 23. Semplice mentre si usa il ciclo while (vero);
- 24. Quando si implementa un ciclo infinito, c'è una differenza nell'uso mentre (1) vs per (;;) vs goto (in C)?
- 25. Test di unità Karma eseguiti ripetutamente in un ciclo infinito
- 26. Perché "window = window.parent;" creare un ciclo infinito?
- 27. Python for loop: perché questo ciclo non è infinito?
- 28. Come terminare il ciclo infinito di "modifica" in VBA
- 29. Bloccato in un ciclo infinito in una funzione
- 30. Cursore mentre il ciclo restituisce ogni valore ma l'ultimo
forse sleep o delay function – rsz
Stai provando a generare un processo server per fare un po 'di lavoro da PHP o è uno script locale che stai eseguendo? – jheddings