>  기사  >  PHP 프레임워크  >  스울 타이머는 단일 프로세스인가요?

스울 타이머는 단일 프로세스인가요?

(*-*)浩
(*-*)浩원래의
2019-12-12 13:41:562013검색

스울 타이머는 단일 프로세스인가요?

밀리초 정밀 타이머. 하단 레이어는 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.084658145904541s

Timer는 IO 소비가 없는 메모리 작업입니다.

Difference

Timer는 PHP 자체 pcntl_alarm과 다릅니다. pcntl_alarm은 시계 신호 + 틱 기능 구현을 기반으로 하며 몇 가지 결함이 있습니다.

최대 초까지만 지원하지만 타이머는 밀리초 수준에 도달할 수 있습니다.

동시에 여러 타이머 프로그램 설정을 지원하지 않습니다

pcntl_alarm은 선언(틱)에 의존합니다. = 1), 성능이 매우 낮음

위 내용은 스울 타이머는 단일 프로세스인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.