I have a script that uses while(true)
to run so it runs forever until it dies. I want to be able to make it echo something once every 4 minutes, how can i do this? The script runs on command prompt and it uses while(true)
so its confusing plus i am not sure how to make it do that every 4 minutes.
How can i make it echo something once every 4 minutes while still in a while(true)
?
You can try
while(true)
{
sleep(240); // sleep for 240 sec
echo " Hello World" ;
}
Or
$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);
}
Output Test with 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
Using a sleep method will actually halt your script from running. I'm not 100% if this is what you want to happen.
Another way to attack this issue would be to compare timestamps from the last "echo" command on each iteration.
$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.
}
This will allow your code within your loop to continue running and only check the times at the start of each iteration.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With