Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to echo something every 4 minutes while in an endless loop

Tags:

php

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)?

like image 923
Matt Jenkins Avatar asked Oct 13 '12 22:10

Matt Jenkins


2 Answers

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
like image 183
Baba Avatar answered Nov 15 '22 09:11

Baba


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.

like image 30
Lix Avatar answered Nov 15 '22 10:11

Lix