PHP Conference Japan 2024

EvPeriodic 類別

(PECL ev >= 0.2.0)

簡介

週期性監視器也是一種計時器,但它們非常靈活。

EvTimer 不同,EvPeriodic 監視器不是基於實時(或相對時間,即流逝的物理時間),而是基於牆上時鐘時間(絕對時間,日曆或時鐘)。 差異在於牆上時鐘時間的運行速度可能比實時快或慢,而且時間跳躍並不少見(例如,調整時間時)。

EvPeriodic 監視器可以設定在特定時間點之後觸發。例如,如果一個 EvPeriodic 監視器設定為在「10 秒後」觸發(例如 EvLoop::now() + 10.0,即絕對時間,而非延遲),而系統時鐘被重置為「去年的 1 月」,則需要一年或更長時間才能觸發事件(與 EvTimer 不同,EvTimer 使用相對逾時,因此在啟動後大約 10 秒仍會觸發)。

與計時器一樣,回呼函式保證只會在應該觸發的時間點之後被呼叫。如果在同一個迴圈迭代中有多個計時器準備就緒,則逾時值較早的計時器會在逾時值較晚的計時器之前被呼叫(但當回呼函式遞迴呼叫 EvLoop::run() 時,這就不再成立)。

類別概要

class EvPeriodic extends EvWatcher {
/* 屬性 */
public $offset;
public $interval;
/* 繼承的屬性 */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* 方法 */
public __construct(
     浮點數 $offset,
     字串 $interval,
     可呼叫 $reschedule_cb,
     可呼叫 $callback,
     混合 $data = null,
     整數 $priority = 0
)
public again(): void
public at(): 浮點數
final public static createStopped(
     浮點數 $offset,
     浮點數 $interval,
     可呼叫 $reschedule_cb,
     可呼叫 $callback,
     混合 $data = null,
     整數 $priority = 0
): EvPeriodic
公開 set( 浮點數 $offset , 浮點數 $interval ):
/* 繼承的方法 */
公開 EvWatcher::feed( 整數 $revents ):
公開 EvWatcher::invoke( 整數 $revents ):
公開 EvWatcher::setCallback( 可呼叫 $callback ):
}

屬性

offset(偏移量)

重複時,此屬性包含偏移值;否則,它代表絕對時間點(傳遞給 EvPeriodic::set() 的偏移值,儘管 libev 為了更好的數值穩定性可能會修改此值)。

interval(間隔)

目前的間隔值。可以隨時修改,但更改僅在週期計時器觸發或呼叫 EvPeriodic::again() 時才會生效。

目錄

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top