>  기사  >  백엔드 개발  >  Thinkphp에서 Swoole을 직접 클릭하세요.

Thinkphp에서 Swoole을 직접 클릭하세요.

coldplay.xixi
coldplay.xixi앞으로
2020-06-08 10:54:394515검색

Swoole은 프로덕션 환경을 위한 PHP 비동기 네트워크 통신 엔진입니다. PHP 개발자가 고성능 비동기 및 동시 TCP, UDP, Unix 소켓, HTTP 및 WebSocket 서비스를 작성할 수 있도록 합니다.


설치

먼저 Swoole 공식 홈페이지의 안내에 따라 Swoole Extension을 설치한 후 Think-Swoole Extension을 설치하세요.

composer require topthink/think-swoole=2.0.*使用

UseThinkphp에서 Swoole을 직접 클릭하세요.

Swoole은 현재 Windows를 지원하지 않습니다Swoole을 HttpServer로 사용

명령줄에서 서버를 시작하세요(버전 2.0+ think-swoole 확장 필요)

명령줄에서 직접 서버를 시작하세요.

php think swoole

시작이 완료되면 0.0.0.0:9501에서 HTTP 서버가 시작되어 현재 애플리케이션에 직접 액세스할 수 있습니다. Swoole 매개변수는 애플리케이션 구성 디렉터리의 swoole.php에서 구성할 수 있습니다(자세한 내용은 구성 파일 내용 참조).

데몬 모드에서 실행해야 하는 경우 swoole.php 파일에서

php think swoole -d

를 사용하거나

'daemonize' =>   true
를 설정할 수 있습니다. 참고: onWorkerStart가 실행 중일 때 HTTP_HOST가 없으므로 애플리케이션에서 app_host를 설정하는 것이 가장 좋습니다. 구성 파일

지원되는 작업에는

php think swoole [start|stop|reload|restart]

onWorkerStart가 실행 중일 때 HTTP_HOST가 없으므로 애플리케이션 구성 파일에서 app_host 매개변수를 설정하는 것이 가장 좋습니다.

시작 후

http://127.0.0.1:9501

를 사용하여 애플리케이션에 액세스할 수 있습니다.

주소와 포트를 구성해야 하는 경우 애플리케이션 구성 디렉터리에

swoole.php 구성 파일을 추가한 다음 다음을 설정할 수 있습니다.

<?phpreturn [
    &#39;host&#39;  => &#39;tp5.com&#39;,
    &#39;port&#39;  =>   9508,];
可以支持Swoole自身的配置参数设置,例如:
<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,];

onWorkerStart 및 onRequest 이벤트 콜백 메서드는 확장에 정의되어 있습니다(다음을 수행하세요. 익숙하지 않은 경우 대체하지 마십시오.) 구성 파일의 클로저를 사용하여 정의할 수 있는 swoole의 이벤트 콜백 메소드를 사용자 정의해야 합니다.

<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,
    &#39;WorkerStop&#39;    =>   function($server, $worker_id){
        // 添加你的代码
    },];

또는 구성 파일에 직접 추가하세요

Swoole을 서버로 사용

Swoole 서버 직접 시작을 지원할 수 있습니다(버전 2.0.9 이상 필요)

php think swoole:server

시작 0.0.0.0:9508의 Websocket 서비스.

사용자 정의 매개변수가 필요한 경우 다음을 포함하여 config/swoole_server.php에서 구성할 수 있습니다.

호스트

Listening address

port

Listening port


mode

Run mode

socketSocket type클로저를 사용하여 관련 이벤트 콜백을 정의하는 것도 지원합니다. swoole의 모든 콜백 메소드 정의를 지원합니다(콜백 메소드는 공개 유형이어야 함)serverType 속성은 소켓 또는 http로 정의되고 swoole의 swoole_websocket_server 및 swoole_http_server를 지원합니다
return [
    &#39;swoole_class&#39;  =>   &#39;app\http\Swoole&#39;,];
명령줄에서 서버 시작
php think swoole:server
php think swoole:server reload
PHP 비디오 튜토리얼"

모두 지원 매개변수.
return [
    // 扩展自身配置
    &#39;host&#39;         => &#39;0.0.0.0&#39;, // 监听地址
    &#39;port&#39;         => 9501, // 监听端口
    &#39;type&#39;         => &#39;socket&#39;, // 服务类型 支持 socket http server
    &#39;mode&#39;         => SWOOLE_PROCESS,
    &#39;socket_type&#39;  => SWOOLE_SOCK_TCP,
 
    // 可以支持swoole的所有配置参数
    &#39;daemonize&#39;    => false,
 
    // 事件回调定义
    &#39;onOpen&#39;       => function ($server, $request) {
        echo "server: handshake success with fd{$request->fd}\n";
    },
 
    &#39;onMessage&#39;    => function ($server, $frame) {
        echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
        $server->push($frame->fd, "this is server");
    },
 
    &#39;onRequest&#39;    => function ($request, $response) {
        $response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>");
    },
 
    &#39;onClose&#39;      => function ($ser, $fd) {
        echo "client {$fd} closed\n";
    },];
사용자 정의 서비스 클래스를 사용할 수도 있습니다.
<?php
namespace app\http;use think\swoole\Server;class Swoole extends Server{
    protected $host = &#39;127.0.0.1&#39;;
    protected $port = 9502;
    protected $option = [ 
        &#39;worker_num&#39;=> 4,
        &#39;daemonize&#39; => true,
        &#39;backlog&#39;   => 128
    ];
 
    public function onReceive($server, $fd, $from_id, $data)
    {
        $server->send($fd, &#39;Swoole: &#39;.$data);
    }}
그런 다음 swoole_server에서 . PHP에 구성 매개변수 추가: 이 매개변수를 정의한 후에는 다른 구성 매개변수가 더 이상 유효하지 않습니다.
재로드|재시작|중지|상태 작업 지원추천 튜토리얼: "

위 내용은 Thinkphp에서 Swoole을 직접 클릭하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 liqingbo.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제