PHP Conference Japan 2024

EvPeriodic::__construct

(PECL ev >= 0.2.0)

EvPeriodic::__construct建構 EvPeriodic 觀察器物件

說明

public EvPeriodic::__construct(
     浮點數 $offset,
     字串 $interval,
     可呼叫 $reschedule_cb,
     可呼叫 $callback,
     混合 $data = null,
     整數 $priority = 0
)

建構 EvPeriodic 監視器物件並自動啟動它。 EvPeriodic::createStopped() 方法會建立已停止的週期性監視器。

參數

offset (偏移量)

請參閱 週期性監視器操作模式

interval (間隔)

請參閱 週期性監視器操作模式

reschedule_cb (重新排程回呼)

重新排程回呼。您可以傳遞 null。請參閱 週期性監視器操作模式

callback (回呼)

請參閱 監視器回呼

data (資料)

與監視器關聯的自訂資料。

priority (優先權)

監視器優先權

範例

範例 #1 週期性計時器。使用重新排程回呼

<?php
// 每 10.5 秒執行一次

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 週期性計時器。從現在開始每 10.5 秒執行一次

<?php
// 從現在開始每 10.5 秒執行一次
$w = new EvPeriodic(fmod(Ev::now(), 10.5), 10.5, NULL, function ($w, $revents) {
echo
time(), PHP_EOL;
});
Ev::run();
?>

範例 #3 每小時執行一次的監視器

<?php
$hourly
= EvPeriodic(0, 3600, NULL, function () {
echo
"每小時執行一次\n";
});
?>

另請參閱

新增註釋

使用者貢獻的註釋 1 則註釋

1187328898 at qq dot com
6 年前
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