● 새로운 RedisServer.php를 생성합니다
● 코드는 다음과 같습니다
<?php use Swoole\Redis\Server; $server = new Server("127.0.0.1", 9501, SWOOLE_PROCESS ); $server->set(array( 'task_worker_num' => 32, 'worker_num' => 1, 'task_enable_coroutine' => true, 'heartbeat_check_interval' => 5, 'heartbeat_idle_time' => 10, )); $server->setHandler('LPUSH', function ($fd, $data) use ($server) { $taskId = $server->task($data); if ($taskId === false) { $server->send($fd, Server::format(Server::ERROR)); } else { $server->send($fd, Server::format(Server::INT, $taskId)); } }); $server->on('Finish', function($serv, $taskID, $data) { $stats = $serv->stats(); if ($stats['tasking_num'] > 10) { //tasking_num 当前正在排队的任务数 echo "剩余任务信息:" . json_encode($serv->stats()) . "\n"; } }); $server->on('Task', function ($serv, $data) { go(function () { usleep(50000); }); var_dump($data); }); $server->start();
task inside usleep( 50000); 작업 실행 시간 시뮬레이션
● 새 Queue.php 생성
● 코드는 다음과 같습니다
<?php $redis = new Redis; $redis->connect('127.0.0.1', 9501); $x=1; while($x <= 1000) { $redis->lpush("myqueue", json_encode(array("hello".$x, "swoole"))); $x++; }
1000개 작업 전달 시뮬레이션# 🎜🎜#
테스트 후 1초 만에 처리task_worker_num을 조정하여 작업 실행 속도에 따라 시작되는 프로세스 수를 제어할 수 있습니다#🎜 🎜#
●이러한 프로세스는 Swoole 하위 계층에서 관리됩니다. 치명적인 오류가 발생하거나 프로세스가 종료되면 하위 계층에서 새 작업 프로세스가 다시 생성됩니다.task_worker_num
# 🎜🎜#● 최대값은 SWOOLE_CPU_NUM * 1000을 초과할 수 없습니다
● 단일 작업의 처리 시간이 다음과 같은 경우 100ms이면 하나의 프로세스가 1초에 1/0.1=10개 작업을 처리할 수 있습니다#🎜 🎜#관련 권장 사항: [
PHP 튜토리얼]
위 내용은 Swoole은 PHP-fpm/apache에서 작업 기능을 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!