(1)swoole启动的主进程是master进程负责全局管理,然后master进程会再fork一个manager进程。
(2)manager进程开始统一管理进程创建回收管理。
(3)manager进程根据设置的worker_num和task_worker_num来创建work进程和task进程
因此启动swoole我们能看到的进程数是:2+worker_num+task_worker_num,2中包含manager进程和master进程
worker_num是用来处理请求逻辑的进程数,task_num是异步任务投递进程,专门处理异步任务的执行
例如下面的代码:
<?php //构建Server对象 $server = new swoole_server("127.0.0.1", 9503); //设置worker进程4个 $server->set([ 'worker_num' => 2, 'task_worker_num' => 2, 'daemonize' => false, ]); //设置客户端连接回调 $server->on('connect', function ($server, $fd) { }); $server->on('receive', function ($server, $fd, $reactor_id, $data) { }); //设置客户端关闭回调 $server->on('close', function ($server, $fd) { }); //设置Task回调 $server->on('Task', function ($serv) { }); //启动服务器 $server->start();
查看进程:
gao 3429 0.0 0.2 238888 21460 tty1 Sl 11:26 0:00 php /mnt/d/wwwroot/todo/index.php gao 3430 0.0 0.0 92684 3204 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php gao 3433 0.0 0.0 88260 3364 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php gao 3434 0.0 0.0 88260 3384 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php gao 3435 0.0 0.0 88676 3524 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php gao 3436 0.0 0.0 88676 3552 tty1 S 11:26 0:00 php /mnt/d/wwwroot/todo/index.php
还可以通过swoole提供的$server->manager_pid和$server->master_pid排除测试
<?php $data=array('a'=>1,'b'=>2,'c'=>3,'d'=>4); extract($data); var_dump($a,$b,$c,$d); ?>在人人商城中捡到的...
通过http推送消息给socket,socket服务再向客户端推送<?php /* * Socket推送 * 请用守护进程方式启动php msgservice.php & (socket只...
php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...
ThinkPHP中有一个debug调试功能,能输出报错文件的信息,并能看到这个函数被哪些函数调用,从框架的启动开始记录,特别方便调试。于是研究了下它的底层给予了实现。<?php //--框架核心--Start //框架内置错误处理 function errDealWith($er...
当我想在一个进程中监听kill 和 kill -9命令报了这个错误。//监听kill pcntl_signal(SIGTERM, function () { posix_kill(0, SIGTERM); });...
概念请参考w3school文章: redis watch ,redis exec (看完基本秒懂)(1)基本事务://连接本地的 Redis 服务 $redis = new Redis(); $redis->con...