PHP 8.4.6 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
6 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