Swoole 2.0 정식 버전이 출시되었습니다. 버전 2.0의 가장 큰 업데이트는 코루틴 지원 추가입니다. 공식 버전은 PHP5와 PHP7을 모두 지원합니다.
Swoole2.0 코루틴을 기반으로 PHP 개발자는 동기 방식으로 코드를 작성할 수 있으며, 하단 레이어는 자동으로 코루틴을 예약하고 이를 비동기 IO로 변환합니다. 기존 비동기 프로그래밍에서 중첩된 콜백 문제를 해결합니다. (추천 학습: swoole 동영상 튜토리얼)
Node.js(ES6+), Python 및 기타 언어의 Yield/generator, async/await 구현과 비교하여 Swoole 코루틴은 추가 키워드를 추가하기 위해 코드를 수정할 필요가 없습니다. .
Go 언어의 고루틴과 비교하면 Swoole 코루틴이 내장되어 있습니다. 코루틴을 시작하기 위해 애플리케이션 레이어 코드에 go 키워드를 추가할 필요가 없으며 사용이 더 간편합니다. . 또한 Swoole 코루틴의 IO 구성 요소에는 하위 계층에 시간 초과 메커니즘이 내장되어 있으므로 클라이언트 시간 초과를 구현하기 위해 복잡한 선택/채널/타이머를 사용할 필요가 없습니다.
현재 Swoole 하단에 내장된 코루틴 클라이언트 구성 요소로는 udpclient, tcpclient, httpclient, redisclient 및 mysqlclient가 있으며, 이는 기본적으로 개발자가 일반적으로 사용하는 여러 통신 프로토콜을 포괄합니다. 코루틴 구성요소는 서버의 onConnect, onRequest, onReceive 및 onMessage 콜백 함수에서만 사용할 수 있습니다.
Swoole 버전 3.0에서는 ZendVM의 EG(vm_interrupt) 메커니즘을 기반으로 하고 setjmp/longjmp에 대한 종속성을 제거하는 새로운 PHP 내장 코루틴 스케줄러를 구현했습니다.
Swoole 코루틴을 PHP 객체 소멸자, 매직 메소드, 반사 함수 호출 및 기타 시나리오를 포함하여 어디에나 적용할 수 있습니다. 새 버전 번호는 Swoole 3.0으로 변경됩니다. 원래 계획은 libco의 C 스택 코루틴을 기반으로 하는 것이었습니다. 하지만 4.0으로 연기되었습니다.
코루틴 커널의 새 버전은 PHP-7.1을 기반으로 하므로 Swoole의 PHP 버전에 대한 의존도는 7.1로, gcc 버전에 대한 의존도는 4.8로 증가했습니다.
Swoole 4.0은 Boost.context 1.60어셈블리 코드를 기반으로 새로운 코루틴 커널을 구현합니다.
PHP 함수 호출 스택 저장 외에도 C 스택의 컨텍스트 저장소가 추가됩니다. 모든 PHP 구문에 대한 지원을 구현했습니다. 이제 call_user_func, 리플렉션, 매직 메서드, array_map을 포함한 모든 PHP 함수에서 코루틴을 사용할 수 있습니다.
4.0은 2.0과 100% 호환되며, 코루틴 커널만 재구성되었으며 API 레이어는 변경되지 않았습니다.
4.0 분기 코드는 곧 C++11 표준으로 업그레이드될 예정입니다. gcc-를 사용하는 것이 좋습니다. 4.8 이상 버전
php7 .1 이상 버전 지원
위 내용은 Swoole 버전의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!