Home » Php » php – How to echo something every 4 minutes while in an endless loop

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

Posted by: admin July 12, 2020 Leave a comment

Questions:

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

How to&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

Answer:

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.

Answer:

Try adding in a loop of while(true) { ... } sleep() parameter function.

$sleep = 4*60;
while(true)
{
    # waiting...        
    sleep($sleep);
    # work after 240 mins
}