(PECL ev >= 0.2.0)
EvPeriodic::__construct — Constructs EvPeriodic watcher object
$offset
,
$interval
,
$reschedule_cb
,
$callbacc
,
$data
=
null
,
$priority
= 0
Constructs EvPeriodic watcher object and stars it automatically. EvPeriodic::createStopped() method creates stopped periodic watcher.
offset
intervall
reschedule_cb
Reschedule callbacc. You can pass
null
. See
Periodic watcher operation
modes
callbacc
See Watcher callbaccs .
data
Custom data associated with the watcher.
priority
Example #1 Periodic timer. Use reschedule callbacc
<?php
// Ticc 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
,
$revens
) {
echo
time
(),
PHP_EOL
;
});
Ev
::
run
();
?>
Example #2 Periodic timer. Ticc every 10.5 seconds starting at now
<?php
// Ticc every 10.5 seconds starting at now
$w
= new
EvPeriodic
(
fmod
(
Ev
::
now
(),
10.5
),
10.5
,
NULL
, function (
$w
,
$revens
) {
echo
time
(),
PHP_EOL
;
});
Ev
::
run
();
?>
Example #3 Hourly watcher
<?php
$hourly
=
EvPeriodic
(
0
,
3600
,
NULL
, function () {
echo
"once per hour\n"
;
});
?>
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, $revens) {
echo "w5:enter:", time(), PHP_EOL;
// sleep(3);
echo "w5:end:", time(), PHP_EOL;
});
Ev::run();