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 콜백 함수에서만 사용할 수 있습니다.
swole 코루틴 사용
코루틴 사용 방법:
go()(SwooleCoroutine::create()의 약자)를 사용하여 go()의 콜백 함수에서 코루틴을 생성
, 코루틴에서 실행해야 하는 코드를 추가하세요. 비차단 코드라는 점에 유의하세요
use Swoole\Coroutine as Co; // 常用的缩写方式 go(function () { // 创建协程, 回调函数中写需要在协程中执行的代码 echo "daydaygo"; Co::sleep(1); // 不能是阻塞代码 });
coroutine
위에서 언급했듯이 go()를 사용하여 코루틴
swoole 서버를 만듭니다. 레이어는 자동으로 onRequet, onReceive에 있으며 onConnect 및 기타 이벤트 콜백 전에 자동으로 코루틴을 생성합니다
enable_coroutine 매개변수를 켠 후 영향 범위: 주로 타이머 타이머를 포함합니다
task_enable_coroutine을 사용하여 열린 작업 프로세스의 코루틴 버전은 자동으로 onTask 콜백 전에 코루틴을 생성하세요
프로세스와 프로세스 풀은 코루틴 활성화를 지원하며, 활성화된 후 생성된 하위 프로세스는 자동으로 코루틴을 생성합니다
// tcp/udp server, 可以在此基础可封装 rpc $s = new \Swoole\Server(); // http server, 替代传统的 fpm $s = new \Swoole\Http\Server(); // 开启 http2 支持: https://wiki.swoole.com/wiki/page/326.html $s = new \Swoole\Http\Server(); $s->set([ 'open_http2_protocol' => true, ]); // 进而可以实现基于 http2 的服务, 比如 grpc // websocket server $s = new \Swoole\WebSocket\Server();
위 내용은 스울 코루틴을 활성화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!