Timer mit Millisekundengenauigkeit. Die unterste Ebene wird basierend auf epoll_wait und setitimer implementiert. Die Datenstruktur verwendet einen minimalen Heap, der das Hinzufügen einer großen Anzahl von Timern unterstützen kann.
Setitimer und Signalimplementierung im Synchronisierungsprozess verwenden, z. B. Manager- und TaskWorker-Prozesse Verwenden Sie epoll_wait/kevent/poll/select timeout im asynchronen Prozess Um
Leistung
zu erreichen, verwendet die untere Ebene die minimale Heap-Datenstruktur, um den Timer zu implementieren. Das Hinzufügen und Löschen von Timern sind also alle Speichervorgänge Die Leistung ist sehr hoch.
Im offiziellen Benchmark-Skript https://github.com/swoole/swoole-src/blob/master/benchmark/timer.php dauert das Hinzufügen oder Löschen eines Timers mit 100.000 zufälligen Zeiten: etwa 0,08 Sekunden.~/workspace/swoole/benchmark$ php timer.php add 100000 timer :0.091133117675781s del 100000 timer :0.084658145904541s
Unterschied
Timer unterscheidet sich von PHPs eigenem pcntl_alarm. pcntl_alarm basiert auf der Implementierung der Taktsignal- und Tick-Funktion und weist einige Mängel auf:
Es unterstützt nur bis zu Sekunden, während der Timer Millisekunden-Ebene erreichen kannUnterstützt nicht das gleichzeitige Einstellen mehrerer Timerprogramme Zeitpcntl_alarm basiert auf deklarieren (Ticks = 1) und die Leistung ist sehr schlecht
Das obige ist der detaillierte Inhalt vonIst der Swoole-Timer ein einzelner Prozess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!