>PHP 프레임워크 >Workerman >워커맨의 특징

워커맨의 특징

(*-*)浩
(*-*)浩원래의
2019-11-22 15:27:032359검색

다음 칼럼에서는 workerman php tutorial 칼럼에서 WorkerMan의 기능을 소개하겠습니다. 필요한 친구들에게 도움이 되길 바랍니다!

WorkerMan의 기능

워커맨의 특징#🎜 🎜 #

1. 순수 PHP 개발

WorkerMan을 사용하여 개발된 애플리케이션은 php-fpm, apache 및 nginx와 같은 컨테이너에 의존하지 않고 독립적으로 실행될 수 있습니다. 이는 PHP 개발자가 애플리케이션을 개발, 배포 및 디버그하는 것을 매우 편리하게 만듭니다.

2. PHP 다중 프로세스 지원

WorkerMan은 서버의 다중 CPU 성능을 최대한 활용하기 위해 다중 프로세스를 지원합니다. -기본적으로 프로세스 및 멀티 태스킹. WorkerMan은 외부 서비스를 제공하기 위해 메인 프로세스와 여러 하위 프로세스를 시작합니다. WorkerMan이 더 안정적이고 효율적입니다.

3. TCP, UDP 지원

WorkerMan은 TCP 및 UDP 두 가지 전송 계층 프로토콜을 지원합니다. 전송 계층 프로토콜에서는 비즈니스 코드를 변경할 필요가 없습니다.

4. 긴 연결 지원

PHP 애플리케이션은 채팅방, 게임 등 클라이언트와 긴 연결을 유지해야 하는 경우가 많습니다. 하지만 기존 PHP 컨테이너(apache, nginx, php-fpm)에서는 이를 수행하기가 어렵습니다. WorkerMan을 사용하면 서버 측 비즈니스가 연결 종료 인터페이스를 적극적으로 호출하지 않는 한 PHP 긴 연결을 사용할 수 있습니다. 단일 WorkerMan 프로세스는 수만 개의 동시 연결을 지원할 수 있으며, 여러 프로세스는 수십만 또는 수백만 개의 동시 연결을 지원할 수 있습니다.

5. 다양한 애플리케이션 계층 프로토콜 지원

WorkerMan 인터페이스는 사용자 정의 프로토콜을 포함한 다양한 애플리케이션 계층 프로토콜을 지원합니다. WorkerMan에서 프로토콜을 변경하는 것도 매우 간단합니다. 필드만 구성하면 되며, 비즈니스 코드를 변경하지 않고도 프로토콜이 자동으로 전환됩니다. 다양한 클라이언트 요구 사항을 충족하기 위해 다양한 프로토콜로 여러 포트를 열 수도 있습니다.

6. 높은 동시성 지원

WorkerMan은 Libevent 이벤트 폴링 라이브러리를 지원합니다(Libevent 확장 프로그램 설치 필요). 높은 동시성 Libevent가 설치되어 있지 않으면 PHP에 내장된 Select 관련 시스템 호출이 사용되며 성능도 매우 강력합니다.

7. 원활한 서비스 재시작 지원

서비스를 다시 시작해야 하는 경우(예: 릴리스 버전) 사용자 요청을 처리하는 프로세스는 즉시 종료되고 다시 시작하는 순간 클라이언트 통신이 실패하는 것을 원하지 않습니다. WorkerMan은 클라이언트 사용에 영향을 주지 않고 원활한 서비스 업그레이드를 보장하기 위해 원활한 재시작 기능을 제공합니다.

8. 파일 업데이트 감지 및 자동 로딩 지원

개발 과정에서 코드를 변경할 때 즉시 효과가 나타나므로 결과를 볼 수 있습니다. WorkerMan은 FileMonitor 파일 모니터링 구성 요소를 제공합니다. 파일이 업데이트되는 동안 WorkerMan은 자동으로 다시 로드를 실행하여 새 파일을 로드하고 적용합니다.

9. 지정된 사용자로 하위 프로세스 실행을 지원합니다.

보안상의 이유로 하위 프로세스는 실제로 사용자 요청을 처리하는 프로세스이므로, 하위 프로세스 너무 높은 권한을 가질 수 없으므로 WorkerMan은 하위 실행 프로세스에 대한 사용자 설정을 지원하여 서버를 더욱 안전하게 만듭니다.

10. 영구적으로 유지되는 객체 또는 리소스를 지원합니다.

WorkerMan은 실행 프로세스 중에 PHP 파일을 한 번만 로드하고 구문 분석합니다. 그러면 클래스 및 함수 선언, PHP 실행 환경, 기호 테이블 등이 반복적으로 생성 및 삭제되는 것을 방지하는 메모리가 됩니다. 이는 웹 컨테이너에서 실행되는 PHP 메커니즘과 완전히 다릅니다.

WorkerMan에서는 정적 멤버나 전역 변수가 프로세스의 수명 주기 동안 적극적으로 파괴되지 않고 영구적으로 유지됩니다. 즉, 개체나 연결과 같은 리소스가 전역 변수나 클래스 정적 멤버에 배치됩니다. 이러한 방식으로 현재 프로세스의 전체 수명주기 내의 모든 요청을 재사용할 수 있습니다.

예를 들어 데이터베이스 연결이 단일 프로세스에서 한 번 초기화되는 한 이 프로세스의 모든 후속 요청은 TCP 3방향 핸드셰이크, 데이터베이스 권한 확인 및 빈번한 데이터베이스 연결 중 연결 끊김 연결 중 TCP 4방향 핸드셰이크 프로세스는 애플리케이션 효율성을 크게 향상시킵니다.

11, 고성능

PHP 파일은 디스크에서 한 번 읽고 구문 분석하므로 메모리에 상주하며 메모리에 있는 opcode는 디스크 IO 및 PHP 요청 초기화, 실행 환경 생성, 어휘 분석, 구문 분석, opcode 컴파일, 요청 닫기 등과 같이 시간이 많이 소요되는 많은 프로세스를 크게 줄여줍니다. nginx, apache 등의 컨테이너에 의존하지 않으며, nginx와 다른 컨테이너 및 PHP 간의 통신 오버헤드에서 가장 중요한 점은 리소스를 영구적으로 유지할 수 있고 매번 데이터베이스 연결을 초기화할 필요가 없다는 것입니다. , 따라서 WorkerMan을 사용하여 애플리케이션을 개발하는 것은 매우 높은 성능을 발휘합니다.

12. HHVM 지원

HHVM 가상 머신에서 실행을 지원하여 PHP 성능을 두 배로 높일 수 있습니다. 특히 CPU 집약적인 컴퓨팅 사업에서는 성능이 매우 뛰어납니다. 실제 스트레스 테스트 비교를 통해 부하 업무가 없을 때 HHVM에서 실행되는 WorkerMan의 네트워크 처리량은 Zend PHP5.6에서 실행되는 것보다 약 30~80% 더 높습니다

더 많은 Workerman 관련 기술 기사를 보려면 WorkermanTutorial 컬럼을 방문하여 알아보세요!

위 내용은 워커맨의 특징의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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