(PECL ev >= 0.2.0)
週期性監視器也是一種計時器,但它們非常靈活。
與 EvTimer 不同,EvPeriodic 監視器不是基於實時(或相對時間,即流逝的物理時間),而是基於牆上時鐘時間(絕對時間,日曆或時鐘)。 差異在於牆上時鐘時間的運行速度可能比實時快或慢,而且時間跳躍並不少見(例如,調整時間時)。
EvPeriodic 監視器可以設定在特定時間點之後觸發。例如,如果一個 EvPeriodic 監視器設定為在「10 秒後」觸發(例如 EvLoop::now() + 10.0
,即絕對時間,而非延遲),而系統時鐘被重置為「去年的 1 月」,則需要一年或更長時間才能觸發事件(與 EvTimer 不同,EvTimer 使用相對逾時,因此在啟動後大約 10
秒仍會觸發)。
與計時器一樣,回呼函式保證只會在應該觸發的時間點之後被呼叫。如果在同一個迴圈迭代中有多個計時器準備就緒,則逾時值較早的計時器會在逾時值較晚的計時器之前被呼叫(但當回呼函式遞迴呼叫 EvLoop::run() 時,這就不再成立)。
$offset
,$interval
,$reschedule_cb
,$callback
,$data
= null
,$priority
= 0$offset
,$interval
,$reschedule_cb
,$callback
,$data
= null
,$priority
= 0重複時,此屬性包含偏移值;否則,它代表絕對時間點(傳遞給 EvPeriodic::set() 的偏移值,儘管 libev 為了更好的數值穩定性可能會修改此值)。
目前的間隔值。可以隨時修改,但更改僅在週期計時器觸發或呼叫 EvPeriodic::again() 時才會生效。