Home  >  Article  >  Backend Development  >  How to execute a function once per second in php

How to execute a function once per second in php

PHPz
PHPzOriginal
2023-04-19 09:15:441397browse

In PHP, sometimes it is necessary to implement the requirement to execute a function once per second. For example, you need to poll the status of a service, or you need to process related tasks regularly. This article will introduce how to implement a method of executing a function once every second in PHP.

Method 1: Use sleep and while loops

The easiest way is to use sleep and while loops. The code is as follows:

function executeEverySecond($function) {
    while (true) {
        $function();
        sleep(1);
    }
}

The parameters of this function are the functions that need to be executed, which are executed once per second through while loop and sleep.

The advantage of using this method is that the code is simple and easy to understand. But the disadvantage is also obvious, that is, you need to wait for one second every time and cannot control the time accurately.

Method 2: Use setInterval and register_tick_function

setInterval and register_tick_function are both PHP timer functions. The former can run a certain function regularly, and the latter can cooperate with set_tick_function to set the function to be run on each tick. The following is the code that uses these two functions to execute once per second:

function myFunction() {
    echo "Hello World!\n";
}

function executeEverySecond($function) {
    $interval = 1; //每秒执行一次
    $lastTime = microtime(true); //记录上一次执行时间

    //设置每个tick执行的函数
    register_tick_function(function() use ($function, &$lastTime, $interval) {
        $currentTime = microtime(true);
        if (($currentTime - $lastTime) >= $interval) {
            $function();
            $lastTime = $currentTime;
        }
    });

    //启动定时器
    declare(ticks = 1) {
        setInterval(function() {}, 1);
    }
}

The advantage of using this method is that it can more accurately control the execution time per second, but the disadvantage is that the code is slightly more complicated.

Method 3: Use pcntl_alarm

pcntl_alarm is a timer function of PHP. You can set a timer to trigger the SIGALRM signal after the specified time. You can capture the signal through pcntl_signal and execute the specified The function. The following is the code that uses pcntl_alarm to execute once per second:

function myFunction() {
    echo "Hello World!\n";
}

function executeEverySecond($function) {
    pcntl_signal(SIGALRM, $function);

    while (true) {
        pcntl_alarm(1);
        sleep(1);
    }
}

The advantage of using this method is that the code is simple and the time can be controlled more accurately. The disadvantage is that you need to pay attention to signals and process safety.

The above are three ways to execute a function once per second in PHP. According to different needs, different methods can be chosen to achieve it.

The above is the detailed content of How to execute a function once per second in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn