(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 //对比$this和self /* * $this更倾向于对象本身 * */ class Par{ public  ...
//参数1 文件名 参数2 缩放比例 function _thumb($_filename,$_percent){ ob_clean();...
php调用Webservice基本语法如下:$url ='xxxxxxx.cn' //链接服务器端 $client = new SoapClient($url);通过以上语法已经连接到webservice,也可将wsdl在本地使用,...
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...
<?php /** * daemonize让当前脚本为守护进程执行 * @param string $callback 匿名函数 */ function daemonize($callback) {...
php event扩展在windows中依赖于php_sockets扩展,因此在php.ini中必须先加载php sockets扩展,如下。extension=sockets extension=event...