밀리초 정밀 타이머. 하단 레이어는 epoll_wait 및 setitimer를 기반으로 구현됩니다. 데이터 구조는 많은 수의 타이머 추가를 지원할 수 있는 최소 힙을 사용합니다.
Manager 및 TaskWorker 프로세스와 같은 동기 프로세스에서 설정기 및 신호 구현 사용 동기 프로세스에서 설정기 및 신호 사용
성능
하단 레이어는 최소 힙 데이터 구조를 사용하여 타이머를 구현합니다. 타이머 삭제는 모두 메모리 작업이므로 성능이 매우 높습니다.공식 벤치마크 스크립트 https://github.com/swoole/swoole-src/blob/master/benchmark/timer.php에서 무작위로 100,000번의 타이머를 추가하거나 삭제하는 데 약 0.08초가 걸립니다.
~/workspace/swoole/benchmark$ php timer.php add 100000 timer :0.091133117675781s del 100000 timer :0.084658145904541sTimer는 IO 소비가 없는 메모리 작업입니다.
Difference
Timer는 PHP 자체 pcntl_alarm과 다릅니다. pcntl_alarm은 시계 신호 + 틱 기능 구현을 기반으로 하며 몇 가지 결함이 있습니다.최대 초까지만 지원하지만 타이머는 밀리초 수준에 도달할 수 있습니다.
동시에 여러 타이머 프로그램 설정을 지원하지 않습니다pcntl_alarm은 선언(틱)에 의존합니다. = 1), 성능이 매우 낮음위 내용은 스울 타이머는 단일 프로세스인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!