thinkphp6 swoole 异步协程
2023-03-29 23:03:03
90
{{single.collect_count}}

一、安装thinkphp swoole扩展

composer require topthink/think-swoole

二、设置swoole配置文件

<?phpuse think\swoole\websocket\socketio\Handler;use think\swoole\websocket\socketio\Parser;return ['server' => ['host'=> env('SWOOLE_HOST', '127.0.0.1'), // 监听地址'port'=> env('SWOOLE_PORT', 80), // 监听端口'mode'=> SWOOLE_PROCESS, // 运行模式 默认为SWOOLE_PROCESS'sock_type' => SWOOLE_SOCK_TCP, // sock type 默认为SWOOLE_SOCK_TCP'options' => ['pid_file'=> runtime_path() . 'swoole.pid','log_file'=> runtime_path() . 'swoole.log','daemonize' => true,//保护模式// Normally this value should be 1~4 times larger according to your cpu cores.'reactor_num' => swoole_cpu_num(),'worker_num'=> swoole_cpu_num(),'task_worker_num' => swoole_cpu_num(),'enable_static_handler' => true,'document_root' => root_path('public'),'package_max_length'=> 40 * 1024 * 1024,'buffer_output_size'=> 20 * 1024 * 1024,'socket_buffer_size'=> 256 * 1024 * 1024,'user'=> 'nobody'],],'websocket'=> ['enable'=> true,'handler' => Handler::class,'parser'=> Parser::class,'ping_interval' => 25000,'ping_timeout'=> 60000,'room'=> ['type'=> 'table','table' => ['room_rows' => 4096,'room_size' => 2048,'client_rows' => 8192,'client_size' => 2048,],'redis' => ['host'=> '127.0.0.1','port'=> 6379,'max_active'=> 5,'max_wait_time' => 5,],],'listen'=> [],'subscribe' => [],],'rpc'=> ['server' => ['enable' => false,'port' => 9000,'services' => [],],'client' => [],],'hot_update' => ['enable'=> true,'name'=> ['*.php'],'include' => [app_path()],'exclude' => [],],//连接池'pool' => ['db'=> ['enable'=> true,'max_active'=> 3,'max_wait_time' => 5,],'cache' => ['enable'=> true,'max_active'=> 3,'max_wait_time' => 5,],//自定义连接池],'coroutine'=> ['enable' => true,'flags'=> SWOOLE_HOOK_ALL,],'tables' => [],//每个worker里需要预加载以共用的实例'concretes'=> [],//重置器'resetters'=> [],//每次请求前需要清空的实例'instances'=> [],//每次请求前需要重新执行的服务'services' => [],];

常驻内存时需要开启保护模式
三、设置listen

<?php// 事件定义文件return ['bind'=> [],'listen'=> ['AppInit'=> [],'HttpRun'=> [],'HttpEnd'=> [],'LogLevel' => [],'LogWrite' => [],'swoole.task' => [\app\listener\ModelTask::class],'swoole.finish' => [\app\listener\ModelFinishTask::class]],'subscribe' => [],];
<?phpdeclare (strict_types = 1);namespace app\listener;use Swoole\Coroutine as Co;class ModelTask{/** * 事件监听处理 * * @return mixed */public function handle($event){vardump($event);return ;}}
回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}