PHP 기본은 비동기적 요소라고는 프로세스하나 포크 띄우는거 말고는 없지만



AMPHP 라던가 swoole 이라던가 대충 여러가지 있음

얘네들은 출시한지 10년차라서 쓰는곳도 좀있음

근데 각자 비동기를 구현한 방식이 다름.



AMPHP 는 노드 JS 처럼 싱글스레드 +  이벤트 루프 모델임


async , await 를 쓰고,  이벤트루프 라이브러리도 노드가 가져다쓴 libuv  이거 설치함

그러면 노드랑 같은데 왜 쓰냐? 코드 새로짜기는 싫고 php 코드 재활용하고 싶은 애들이 쓰는거



https://amphp.org/


Asynchronous Multitasking PHPAmp is a non-blocking concurrency library for PHP based on Revolt.amphp.org


amphp 공식 예제.





swoole

중국인들이 인구트래픽 감당안되서 C++ 로 하나 만듦


open swoole - 중국인 못믿어서 영국인이 포크 떳음 ㅋㅋㅋ

그래서 다들 이거쓰는중


https://openswoole.com/


Open Swoole: PHP Server with Async IO, Coroutines and Fibers (previously Swoole) | Open Swoole PHPUse Open Swoole to build high-performance, scalable, concurrent TCP, UDP, Unix Socket, HTTP, WebSocket services with PHP without too much knowledge about non-blocking I/O programming and low-level Linux kernel with fiber and coroutines.openswoole.com

얘네는 코루틴 모델인데

지금 php 프레임워크들 swoole 랩핑한거 많아짐



코루틴 모델의 장점은 async ,await 처럼 하나가 async 키워드 달면 호출자도 달아야하는 함수 색 전염이 없음

그래서 프레임워크들이 swoole 많이 쓰는듯.


코루틴에서 도니까 전역상태 변경만 안일어나면되는데


swoole 에 맞춰 쓰기 귀찮은 사람들이 기존 코드 변경 최소화하려고 octane 만듦 

(요청 끝나고 코루틴 내 모든 변수 초기화 옵션넣음)

그러면 저걸 왜쓰냐는데 DB 풀도 있고 프레임워크초기화는 안해도 되서 성능 이득이 여전히 있음.



swoole 기반으로 처음부터 짠 PHP 프레임워크도 나왔는데

성능은 고랭 쪽 프레임워크들이랑 비슷함.


끝.