2014-09-19 4 views
0

Je crée un script simple pour tester que je peux faire écho dans ma boucle while avant qu'il ne prenne 60 secondes, mais le problème est qu'il ne résonnera pas dans ma boucle. Je ne sais pas si c'est vraiment exécuté à l'intérieur de ma boucle while. Ensuite, mon navigateur va s'écraser.exécution du script avant 60 secondes

$timelimit = 60; //seconds 
set_time_limit($timelimit); 
$start_time = time(); //set startup time; 



while(((time() - $start_time) < $timelimit) || !$timelimit){ 
    echo "executing..<br/>"; 
} 

Merci d'avance.

+0

Votre question n'est pas très claire. Je ne suis pas sûr de ce que vous demandez –

+0

Si votre navigateur se bloque lors du chargement de la page, je suppose qu'il est surchargé par probablement des millions de lignes de 'exécution 'étant reçu du serveur. Une seule déclaration 'echo' nécessite ** très ** peu de temps. Vous devriez ajouter 'usleep (100000);' (dormir 100000 microsecondes/100 millisecondes) dans votre boucle pour limiter l'exécution. – Lukas

+0

@ Lukas, merci – kelly123

Répondre

1

Ceci est une boucle très serrée. Il fonctionnera très rapidement et créera une très grande sortie, qui finira par tuer le navigateur (il aura des centaines de milliers de lignes). Vous pouvez ajouter un certain retard à votre boucle:

while(((time() - $start_time) < $timelimit) || !$timelimit){ 
    sleep(1); // pause for 1 second 
    echo "executing..<br/>"; 
} 

Dans ce cas, la sortie sera seulement 60 lignes, et le navigateur doit rendre après une minute d'attente.

0

Si vous attendez de voir la sortie comme le script le génère, alors vous voudrez ajouter un flush(); après votre écho. Cependant, si je me souviens bien, php attendra toujours pour envoyer la sortie jusqu'à un certain nombre d'octets (1024 peut-être?)

1

L'exécution de l'UC est la première (environ 10^-9s par exécution). Votre temps de bouclage est 60 seconds. Tenez compte du nombre d'exécutions (pouvant être 300915626). Pendant ce temps, si vous voulez imprimer quelque chose, votre navigateur sera tué.

Questions connexes