(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排除测试
代码1:for循环批量插入100W数据<?php set_time_limit(0); $servername = "localhost"; $username = "root"; $password ...
//$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public function getposition($ak,$cityname){ $callback=array('lng'=>0,'l...
PHP不像net支持多继承,自身只支持单继承,为了解决这个问题,php出了Trait这个特性,减少单继承语言的限制。并且能让代码复用率更高。说白了就是一个对象的属性和方法扩展工具一样。例如:trait exts { public f...
经常我们下载国外资源容易被墙,可以通过php脚本获取远程文件流然后输出给我们的浏览器来下载。<?php //设置下载文件的url $url = 'https://mirrors.huaweicloud.com/ubuntukylin/ubuntukylin-19....
php生成器的方法getReturn获取生成器迭代完成后的返回值,当生成器迭代完成会将生成器的返回值返回,因此如果迭代器未进行迭代是获取不到值的,如果你没有return值则返回null,参考代码:<?php function G1() { &nbs...