라이브러리

[PHP] SwooleServer::task - 작업 작업자 프로세스에 데이터를 전송합니다.




SwooleServer::task


SwooleServer::task는 Swoole의 비동기 작업을 처리하는 기능입니다. 이 기능을 사용하면 서버가 비동기적으로 작업을 처리할 수 있습니다.

# task와 worker


SwooleServer::task는 worker 프로세스에서 실행됩니다. worker 프로세스는 서버의 요청을 처리하는 프로세스입니다. task는 worker 프로세스에서 비동기적으로 작업을 처리하는 기능입니다.

# task 예제


#hostingforum.kr
php

// server.php

use SwooleServer;



$server = new Server('127.0.0.1', 9501, SWOOLE_BASE);



$server->set([

    'worker_num' => 2,

]);



$server->on('WorkerStart', function (Server $server, $workerId) {

    echo "Worker $workerId started.
";

});



$server->on('Task', function (Server $server, $taskId, $fromWorkerId, $data) {

    echo "Task $taskId received from worker $fromWorkerId.
";

    // 비동기 작업을 처리합니다.

    sleep(2);

    $result = "Task $taskId result";

    $server->finish($result);

});



$server->on('Finish', function (Server $server, $taskId, $data) {

    echo "Task $taskId finished with result: $data
";

});



$server->on('Connect', function (Server $server, $fd, $fromId) {

    echo "Client $fd connected.
";

});



$server->on('Receive', function (Server $server, $fd, $fromId, $data) {

    echo "Client $fd received message: $data
";

    // 비동기 작업을 요청합니다.

    $server->task(["message" => $data]);

});



$server->start();



#hostingforum.kr
php

// client.php

use SwooleCoroutine;



$cli = new SwooleCoroutineClient(SWOOLE_SOCK_TCP);



$cli->connect('127.0.0.1', 9501);



$cli->send("Hello, server!");



$cli->recv();



위 예제에서, client.php는 서버에 "Hello, server!"라는 메시지를 보냅니다. 서버는 이 메시지를 받고, 비동기적으로 작업을 처리합니다. 작업이 완료되면, 서버는 결과를 클라이언트에게 전송합니다.

# task_options


SwooleServer::task는 task_options 옵션을 사용할 수 있습니다. 이 옵션은 task를 처리하는 worker 프로세스의 수를 지정합니다.

#hostingforum.kr
php

$server->set([

    'worker_num' => 2,

    'task_worker_num' => 4,

]);



위 예제에서, worker 프로세스의 수는 2개지만, task를 처리하는 worker 프로세스의 수는 4개입니다. 이로 인해, task를 처리하는 worker 프로세스의 수는 worker 프로세스의 수보다 더 많아집니다.

# task_max_request


SwooleServer::task는 task_max_request 옵션을 사용할 수 있습니다. 이 옵션은 task를 처리하는 worker 프로세스의 최대 요청 수를 지정합니다.

#hostingforum.kr
php

$server->set([

    'task_max_request' => 100,

]);



위 예제에서, task를 처리하는 worker 프로세스의 최대 요청 수는 100입니다. 이로 인해, task를 처리하는 worker 프로세스는 최대 100개의 요청을 처리할 수 있습니다.

결론


SwooleServer::task는 Swoole의 비동기 작업을 처리하는 기능입니다. 이 기능을 사용하면 서버가 비동기적으로 작업을 처리할 수 있습니다. worker 프로세스에서 task를 처리하고, task_options와 task_max_request 옵션을 사용할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 94 페이지

검색

게시물 검색