
SwooleServer::taskWaitMulti 함수는 여러 작업을 동시에 대기시키는 기능을 제공합니다. 이 함수를 사용하여 작업을 대기시키는 방법은 다음과 같습니다.
1. 작업을 대기시키기 위해 taskWaitMulti 함수를 호출합니다.
2. taskWaitMulti 함수는 여러 작업을 동시에 대기시키기 때문에, 작업이 완료될 때까지 대기합니다.
3. 작업이 완료되면, taskWaitMulti 함수는 완료된 작업의 ID를 반환합니다.
작업을 대기시키는 동시에 다른 작업을 처리하는 방법은 다음과 같습니다.
1. 다른 작업을 처리하기 위해 task 함수를 호출합니다.
2. task 함수는 작업을 처리하고, 작업이 완료되면 완료된 작업의 ID를 반환합니다.
3. taskWaitMulti 함수는 작업을 대기시키기 때문에, 다른 작업을 처리하는 동안에도 대기합니다.
예제를 통해 이해를 돕겠습니다.
#hostingforum.kr
php
$serv = new swoole_server("0.0.0.0", 9501);
$serv->set(array(
'worker_num' => 4,
'task_worker_num' => 4,
));
$serv->on('connect', function ($serv, $fd, $from_id) {
echo "Client: $fd connect.n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
// 작업을 대기시키기 위해 taskWaitMulti 함수를 호출합니다.
$task_id = $serv->taskWaitMulti(1, 2, 3);
echo "Task ID: $task_idn";
// 다른 작업을 처리하기 위해 task 함수를 호출합니다.
$serv->task("Task 1");
$serv->task("Task 2");
// 작업이 완료되면, taskWaitMulti 함수는 완료된 작업의 ID를 반환합니다.
while ($task_id > 0) {
$task_id = $serv->taskGet($task_id);
echo "Task ID: $task_idn";
}
});
$serv->on('task', function ($serv, $task_id, $from_id, $data) {
echo "Task ID: $task_id, Data: $datan";
// 작업을 처리합니다.
sleep(2);
$serv->taskDone($task_id);
});
$serv->on('taskdone', function ($serv, $task_id) {
echo "Task ID: $task_id done.n";
});
$serv->start();
이 예제에서는 taskWaitMulti 함수를 사용하여 작업을 대기시키고, 다른 작업을 처리하는 방법을 보여줍니다. 작업이 완료되면, taskWaitMulti 함수는 완료된 작업의 ID를 반환합니다.
2025-07-05 12:11