PHP 8.5.2 Released!

EvPeriodic::__construct

(PECL ev >= 0.2.0)

EvPeriodic::__constructConstructs EvPeriodic watcher object

説明

public EvPeriodic::__construct(
     float $offset ,
     string $interval ,
     callable $reschedule_cb ,
     callable $callback ,
     mixed $data = null ,
     int $priority = 0
)

Constructs EvPeriodic watcher object and starts it automatically. EvPeriodic::createStopped() method creates stopped periodic watcher.

パラメータ

offset
See Periodic watcher operation modes
interval
See Periodic watcher operation modes
reschedule_cb
Reschedule callback. You can pass null. See Periodic watcher operation modes
callback
See Watcher callbacks.
data
Custom data associated with the watcher.
priority
Watcher priority

例1 Periodic timer. Use reschedule callback

<?php
// Tick each 10.5 seconds

function reschedule_cb ($watcher, $now) {
return
$now + (10.5. - fmod($now, 10.5));
}

$w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
echo
time(), PHP_EOL;
});
Ev::run();
?>

例2 Periodic timer. Tick every 10.5 seconds starting at now

<?php
// Tick every 10.5 seconds starting at now
$w = new EvPeriodic(fmod(Ev::now(), 10.5), 10.5, NULL, function ($w, $revents) {
echo
time(), PHP_EOL;
});
Ev::run();
?>

例3 Hourly watcher

<?php
$hourly
= EvPeriodic(0, 3600, NULL, function () {
echo
"once per hour\n";
});
?>

参考

add a note

User Contributed Notes 1 note

up
0
1187328898 at qq dot com
7 years ago
function reschedule_cb_10s ($watcher, $now) {
    return $now + 10.;
}

//PHP7.0+版本不支持reschedule_cb模式
// PHP5.6测试通过
$w5 = new EvPeriodic(0.0, 0.0, "reschedule_cb_10s", function ($w, $revents) {
    echo "w5:enter:", time(), PHP_EOL;
//    sleep(3);
    echo "w5:end:", time(), PHP_EOL;
});

Ev::run();
To Top