Buongiorno a tutti.
Ho la necessità di uscire da un while dopo un certo tot di tempo...ma non sono riuscito a risolvere.
Qualche idea?
Grazie
Buongiorno a tutti.
Ho la necessità di uscire da un while dopo un certo tot di tempo...ma non sono riuscito a risolvere.
Qualche idea?
Grazie
Ho paura di chiederti quello che stai facendo
Comunque, così di primo acchito direi che ti basta, ad esempio prendere il tempo attuale in millisecondi ed inserire un controllo nel while che lo faccia terminare nel momento in cui il tempo in millisecondi superi di un certo delta quello iniziale.
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Ci ho già provato in questo modo:
while(true){
if ((time() - $start_time) > 20) {
return false; // timeout, function took longer than 20 seconds
}
}
ma niente da fare
Ps. sono in attesa di alcuni dati tramite socket_read e ogni tanto il server non invia nulla
Ultima modifica di gauge; 05-08-2015 a 13:59
Perchè vuoi fare questo ?
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
Che vuol dire "niente da fare"? Che fa? Da errore? Non esegue niente del ciclo?
Spiega un po', non abbiamo la sfera di cristallo, io almeno non ce l'ho, satifal mi pare di aver letto in un'altra discussione che ce l'ha in riparazione o comunque non è attualmente disponibile.
Il dispositivo remoto non risponde e non da errori. Il ciclo, dopo un tot di dati, si aspetta un ETX, ma il dispositivo remoto rimane muto.
A parte che per uscire da un ciclo si usa l'istruzione break e non return e, tralasciando l'arcano motivo per cui stai facendo una cosa del genere, per un loop di, ad esempio, 5 secondi basta fare una roba del genere:
Codice PHP:
<?php
$end = time() + 5;
while(time() < $end) {
...
}
?>
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Ho provato così, ma non va:
Codice PHP:
<?php
$end = time() + 20;
while(($byte != chr(3)) || (time() < $end)){
...
}
?>
A parte che "non va" non significa nulla, evidentemente la condizione è sempre vera.
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Scusami, ho messo l'OR invece che l'AND. Però il ciclo non si interrompe comunque. Ho provato solo la parte di codice che mi hai dato e funziona. Cosa sto sbagliando?