ReactPHP는 PHP의 이벤트 중심 프로그래밍을 위한 저수준 라이브러리입니다. 핵심에는 이벤트 루프가 있으며 그 위에는 스트림 추상화, 비동기 DNS 확인자, 네트워크 클라이언트/서버, HTTP 클라이언트/서버 및 프로세스와의 상호 작용과 같은 하위 수준 유틸리티를 제공합니다. 타사 라이브러리는 이러한 구성 요소를 사용하여 비동기 네트워크 클라이언트/서버 등을 만들 수 있습니다.
<?php
// $ composer require react/http react/socket # install example using Composer
// $ php example.php # run example on command line, requires no additional web server
require __DIR__ . ' /vendor/autoload.php ' ;
$ server = new React Http HttpServer ( function ( Psr Http Message ServerRequestInterface $ request ) {
return React Http Message Response:: plaintext (
" Hello World! n"
);
});
$ socket = new React Socket SocketServer ( ' 127.0.0.1:8080 ' );
$ server -> listen ( $ socket );
echo " Server running at http://127.0.0.1:8080 " . PHP_EOL ;
ReactPHP로 작성된 이 간단한 웹 서버는 "Hello World!"로 응답합니다. 모든 요청에 대해.
ReactPHP는 전 세계 모든 종류의 프로젝트에서 수백만 건의 설치를 통해 프로덕션 준비가 완료되었으며 전투 테스트를 거쳤습니다. 이벤트 기반 아키텍처는 수백 또는 수천 개의 동시 연결, 장기 실행 애플리케이션 및 비차단 I/O 작업을 통해 다양한 형태의 협력적 멀티태스킹을 처리하는 효율적인 네트워크 서버 및 클라이언트에 완벽하게 적합합니다. ReactPHP를 특별하게 만드는 것은 공통 네트워크 서비스, 데이터베이스 시스템 및 기타 타사 API와 같은 많은 기존 시스템과 통합할 수 있게 해주는 수백 개의 타사 라이브러리가 포함된 생생한 생태계입니다.
ReactPHP는 기본적으로 비차단입니다. I/O 차단을 위해 작업자를 사용합니다. 이벤트 루프는 리액터 패턴(따라서 이름)을 기반으로 하며 EventMachine(Ruby), Twisted(Python) 및 Node.js(V8)와 같은 라이브러리에서 크게 영감을 받았습니다.
현재 보고 계신 이 저장소는 @ReactPHP에 관한 모든 것을 논의하고 계획하기 위한 메타 저장소로 주로 사용됩니다. 각 구성 요소, 설명서 및 소스 코드에 대한 자세한 내용은 아래 링크된 개별 구성 요소를 참조하세요.
EventLoop ReactPHP의 핵심 리액터 이벤트 루프입니다. 문서 읽기
ReactPHP의 비차단 I/O를 위한 스트림 이벤트 기반 읽기 및 쓰기 가능 스트림입니다. 문서 읽기
약속 약속/PHP 구현. 문서 읽기
ReactPHP용 비동기 비동기 유틸리티 및 파이버. 문서 읽기
소켓 비동기, 스트리밍 일반 텍스트 TCP/IP, 보안 TLS 소켓 서버 및 ReactPHP용 클라이언트 연결. 문서 읽기
ReactPHP용 데이터그램 이벤트 기반 UDP 클라이언트 및 서버 소켓입니다. 문서 읽기
ReactPHP를 위한 HTTP 이벤트 기반 스트리밍 HTTP 클라이언트 및 서버 구현. 문서 읽기
ReactPHP용 DNS 비동기 DNS 확인자. 문서 읽기
ReactPHP를 위한 캐시 비동기 캐싱 . 문서 읽기
하위 프로세스를 실행하기 위한 ChildProcess 라이브러리입니다. 문서 읽기
PromiseTimer ReactPHP의 Promise lib에 대한 간단한 시간 초과 구현입니다. 문서 읽기
PromiseStream ReactPHP 위에 구축된 Promise-land와 Stream-land 간의 누락된 링크입니다. 문서 읽기
아우토반용 Thruway PHP 클라이언트 및 라우터 라이브러리 및 실시간 애플리케이션 메시징용 WAMP(웹 애플리케이션 메시징 프로토콜) voryx/Thruway
PPM - PHP 프로세스 관리자 PPM은 최신 PHP 애플리케이션을 위한 프로세스 관리자, 과급기 및 로드 밸런서입니다. PHP-PM/PHP-PM
php-ar-drone 사용자가 PHP를 통해 Parrot AR Drone을 제어할 수 있는 node-ar-drone의 포트 jolicode/php-ar-drone
Ratchet 비동기 WebSocket 서버 Ratchetphp/Ratchet
PredisAsync ReactPHP 위에 구축된 Redis용 비동기 PHP 클라이언트 라이브러리 nrk/predis-async
단서/redis-server 순수 PHP로 Redis 서버 구현 단서/redis-server
그리고 위키 페이지에 더 많은 내용이 있습니다. »
Sergey Zhuk ReactPHP를 다루는 기사 시리즈: 기본부터 실제 애플리케이션 예제까지. sergeyzhuk.me
여러 ReactPHP 구성 요소와 작동 방식에 대한 Cees-Jan Kiewiet 블로그 시리즈입니다. blog.wyrihaximus.net
Loïc Faugeron 슈퍼 스피드 심포니 - ReactPHP. gnugat.github.io
Marc J. Schmidt는 ReactPHP를 사용하여 PHP 앱에 고성능을 제공합니다. marcjschmidt.de
Marc Morera ReactPHP가 Symfony를 만났을 때 Medium.com/@apisearch
Christian Lück ReactPHP로 한계를 뛰어넘다
Jeremy Mikola Async PHP와 React
Igor Wiedler 이벤트 기반 PHP
ReactPHP는 일련의 개별 구성 요소로 구성됩니다. 이는 "ReactPHP 프레임워크"와 같은 것을 설치하는 대신 실제로 필요한 구성 요소만 선택한다는 의미입니다.
이 프로젝트는 모든 안정적인 구성 요소에 대해 SemVer를 따릅니다. 이러한 구성 요소를 설치하는 데 권장되는 방법은 Composer를 사용하는 것입니다. Composer를 처음 사용하시나요?
예를 들어 다음과 같이 보일 수 있습니다.
# recommended install: pick required components
composer require react/event-loop react/http
대안으로 모든 안정적인 구성 요소를 한 번에 설치하는 메타 패키지도 제공합니다. 안정적인 구성 요소 목록은 시간이 지남에 따라 변경될 수 있으므로 빠른 프로토타이핑을 위해서만 설치하는 것이 좋습니다. 이 메타 패키지는 다음과 같이 설치할 수 있습니다.
# quick protoyping only: install all stable components
composer require react/react:^1.4
자세한 내용은 ReactPHP 홈페이지에서 빠른 시작 예제와 사용 세부정보를 확인하세요.
버전 업그레이드에 대한 자세한 내용은 모든 ReactPHP 구성 요소에 대한 결합된 변경 로그를 참조하세요.
ReactPHP에 대해 질문이 있거나 도움이 필요하십니까? 걱정하지 마세요. 저희가 도와드리겠습니다!
첫 번째 단계로, 각 구성요소와 함께 제공되는 상세한 문서를 확인하십시오(위의 각 구성요소에 대한 개별 문서 링크 참조). 문서에 질문에 대한 답변이 없으면 더 많은 사람들과 관련이 있을 가능성이 높습니다. 다른 사람들도 참여할 수 있도록 주저하지 말고 관련 구성 요소에 문제로 질문을 제출해 주세요.
Gitter 공식 채팅방을 확인하실 수도 있습니다. 이 채팅방에는 이 프로젝트에 참여하는 대부분의 사람들이 참여하고 있기 때문에 많은 질문에 대해 몇 분에서 몇 시간 내에 답변을 받을 수 있습니다. 우리는 또한 이 채팅방을 사용하여 모든 새로운 릴리스와 지속적인 개발 노력을 발표하므로 이 채팅방에 좀 더 오래 머무르는 것을 고려해 보십시오.
또한 업데이트를 보려면 Twitter에서 @reactphp를 팔로우하세요. 우리는 주로 주목할 만한 대규모 업데이트에 사용하고 지속적인 개발 노력에 대해 커뮤니티에 최신 정보를 제공합니다. 공유할 내용이 있으면 언제든지 #reactphp
해시태그를 사용하세요!
우리는 매우 개방적인 프로젝트이며 가능한 한 공개 커뮤니케이션을 선호하므로 더 많은 사람들이 참여하고 최상의 솔루션을 얻는 데 도움을 줄 수 있습니다. 동시에 우리는 어떤 것들은 개인적으로 해결하는 것이 더 낫다는 것을 깨닫습니다. 단지 감사 인사를 전하고 싶거나, 보안 문제를 보고하고 싶거나, 특정 기능 개발을 후원하고 싶다면 [email protected]
로 이메일을 보내 핵심 팀에 비공개로 연락할 수 있습니다. 우리는 소규모 자원봉사자 팀이라는 점을 명심하고 도움을 청하는 모든 사람을 지원하기 위해 최선을 다합니다.
ReactPHP를 지원하고 싶나요? 엄청난! ReactPHP가 훌륭하다고 생각하는 이유를 세상에 알리는 것부터 시작하고 다른 사람들도 동참할 수 있도록 도와주세요! 트윗을 보내고, 블로그 게시물을 작성하고, 지역 사용자 그룹이나 컨퍼런스에서 강연을 하거나, 심지어 책을 쓰기도 합니다. 당신이 도울 수 있는 방법은 여러 가지가 있습니다. 언제든지 비공개로 연락하고 지원 채널을 통해 다른 사람들을 도울 수 있습니다. 감사합니다!
테스트 스위트를 실행하려면 먼저 이 저장소를 복제한 다음 Composer를 통해 모든 종속성을 설치해야 합니다.
composer install
테스트 스위트를 실행하려면 프로젝트 루트로 이동하여 다음을 실행하십시오.
vendor/bin/phpunit
테스트 스위트에는 안정적인 인터넷 연결에 의존하는 다양한 기능 통합 테스트도 포함되어 있습니다. 수많은 통합 테스트로 인해 CI 실행 중에는 기본적으로 이러한 테스트를 건너뜁니다. 또한 이를 실행하고 싶지 않은 경우 다음과 같이 간단히 건너뛸 수 있습니다.
vendor/bin/phpunit --exclude-group internet
MIT, 라이센스를 참조하세요.