swoole进程树
- 进程:一个程序启动之后就是一个进程了,操作系统也会启动一个主线程,主线程会执行起来。
 
文档demo
<?php
use Swoole\Server;
// 创建 Server 对象 监听 127.0.0.1:9501 端口
$server = new Server('0.0.0.0', 9501);
$server->set([
    'reactor_num' => 1,
    'worker_num' => 2
]);
// 监听连接事件
$server->on('Connect', function ($server, $fd) {
    echo "client: connected.\n";
});
// 监听数据接收事件
$server->on('Receive', function ($server, $fd, $reactor_id, $data) {
    echo "收到数据: ".$data."\r\n";
    $server->send($fd, "Server接收到了数据: {$data}");
});
// 监听连接关闭事件
$server->on('Close', function ($server, $fd) {
    echo "client close.\n";
});
// 启动服务器
$server->start();
[root@jb51 swoole_learn]# netstat -luntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      7730/pure-ftpd (SER
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1590/sshd
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      19207/docker-proxy
tcp        0      0 0.0.0.0:888             0.0.0.0:*               LISTEN      17824/nginx: worker
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      3846/python
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      10305/sendmail: acc
tcp        0      0 0.0.0.0:9501            0.0.0.0:*               LISTEN      16608/php
tcp        0      0 0.0.0.0:5672            0.0.0.0:*               LISTEN      19227/docker-proxy
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      15141/redis-server
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17824/nginx: worker
tcp6       0      0 :::21                   :::*                    LISTEN      7730/pure-ftpd (SER
tcp6       0      0 :::22                   :::*                    LISTEN      1590/sshd
tcp6       0      0 :::15672                :::*                    LISTEN      19213/docker-proxy
tcp6       0      0 :::5672                 :::*                    LISTEN      19233/docker-proxy
tcp6       0      0 :::3306                 :::*                    LISTEN      1390/mysqld
udp        0      0 0.0.0.0:68              0.0.0.0:*                           922/dhclient
udp        0      0 10.0.16.4:123           0.0.0.0:*                           655/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           655/ntpd
udp6       0      0 fe80::5054:ff:fec3::123 :::*                                655/ntpd
udp6       0      0 ::1:123                 :::*                                655/ntpd
[root@jb51 swoole_learn]# pstree -ap | grep php
  |-php-fpm,24510
  |   |-php-fpm,22260
  |   |-php-fpm,24511
  |   |-php-fpm,24512
  |   |-php-fpm,24513
  |   |-php-fpm,24514
  |   |-php-fpm,24515
  |   `-php-fpm,27440
  |   |       `-php,16608 tcp.php
  |   |           |-php,16609 tcp.php
  |   |           |   |-php,16611 tcp.php
  |   |           |   `-php,16612 tcp.php
  |   |           `-{php},16610
  |           |-grep,17040 --color=auto php
可以看到我们运行的程序的进程ID是16608
[root@jb51 swoole_learn]# ls -al /proc/16608/fd
总用量 0
dr-x------ 2 root root  0 9月  25 11:53 .
dr-xr-xr-x 9 root root  0 9月  25 11:53 ..
lrwx------ 1 root root 64 9月  25 11:54 0 -> /dev/pts/0
lrwx------ 1 root root 64 9月  25 11:54 1 -> /dev/pts/0
lrwx------ 1 root root 64 9月  25 11:54 10 -> anon_inode:[eventpoll]
lrwx------ 1 root root 64 9月  25 11:53 2 -> /dev/pts/0
lrwx------ 1 root root 64 9月  25 11:54 3 -> socket:[394583124]
lrwx------ 1 root root 64 9月  25 11:54 4 -> socket:[394583127]
lrwx------ 1 root root 64 9月  25 11:54 5 -> socket:[394583128]
lrwx------ 1 root root 64 9月  25 11:54 6 -> socket:[394583129]
lrwx------ 1 root root 64 9月  25 11:54 7 -> socket:[394583130]
lrwx------ 1 root root 64 9月  25 11:54 8 -> anon_inode:[eventpoll]
lrwx------ 1 root root 64 9月  25 11:54 9 -> anon_inode:[signalfd]
swoole主进程fd目录下存在这么些个文件。

可以看到对应 ipv4下的一些socket套接字,前面一部分是IP地址,local_address rem_address是ip和端口构成的地址,st状态就是0A是处于监听状态中,对应的十进制就是10
通讯域类型:IPV4
一般我们连接使用AF_INET PF_INET
套接字的类型:TCP
cat /proc/进程id/net/tcp:打印进程的TCP表
查看unix域套接字
[root@jb51 swoole_learn]# cat /proc/16608/net/unix
Num       RefCount Protocol Flags    Type St Inode Path
ffff8bd47861aa80: 00000002 00000000 00010000 0001 01 167684 /var/run/docker/libnetwork/562f822555f8.sock
ffff8bd3fa5b7740: 00000002 00000000 00010000 0001 01 310686178 /usr/local/qcloud/YunJing/conf/ydrpc_1
ffff8bd375ea8440: 00000002 00000000 00010000 0001 01 13352 /run/dbus/system_bus_socket
ffff8bd376423740: 00000002 00000000 00010000 0001 01 31044 /run/containerd/containerd.sock.ttrpc
ffff8bd376421540: 00000002 00000000 00010000 0001 01 31046 /run/containerd/containerd.sock
ffff8bd376768cc0: 00000002 00000000 00010000 0001 01 100592 /tmp/mysql.sock
ffff8bd474f65dc0: 00000002 00000000 00010000 0001 01 13642 /var/run/lsm/ipc/simc
ffff8bd375ea8000: 00000002 00000000 00010000 0001 01 13351 @ISCSID_UIP_ABSTRACT_NAMESPACE
ffff8bd376544000: 00000002 00000000 00010000 0001 01 166343 /var/run/docker/metrics.sock
ffff8bd376769dc0: 00000002 00000000 00010000 0001 01 12881 /var/run/lsm/ipc/sim
ffff8bd3786accc0: 00000002 00000000 00010000 0001 01 48318543 /tmp/php-cgi-74.sock
ffff8bd376768880: 00000002 00000000 00010000 0001 01 12903 /var/run/acpid.socket
ffff8bd376420000: 00000002 00000000 00010000 0001 01 11370 /run/lvm/lvmetad.socket
ffff8bd376421dc0: 00000002 00000000 00010000 0001 01 11131 /run/systemd/private
ffff8bd3fa5b5100: 00000002 00000000 00000000 0002 01 310686176 @/usr/local/qcloud/YunJing/conf/ydrpc_3
ffff8bd376422ec0: 00000002 00000000 00010000 0001 01 11174 /run/lvm/lvmpolld.socket
ffff8bd376422a80: 00000002 00000000 00010000 0005 01 11192 /run/udev/control
ffff8bd375ea9dc0: 00000002 00000000 00010000 0001 01 13350 @ISCSIADM_ABSTRACT_NAMESPACE
ffff8bd3f582d980: 00000002 00000000 00010000 0001 01 26050 /var/run/docker.sock
ffff8bd376547300: 00000002 00000000 00010000 0001 01 168907 /run/containerd/s/f3d9541006d85ff69c496c73d8182939cb475898eff4792f03390b069f48352b
ffff8bd3fa5b4440: 00000002 00000000 00010000 0001 01 69324 /var/run/supervisor.sock.19529
ffff8bd478618440: 00000003 00000000 00000000 0002 01  8396 /run/systemd/notify
ffff8bd478618880: 00000002 00000000 00000000 0002 01  8398 /run/systemd/cgroups-agent
ffff8bd478619540: 00000002 00000000 00010000 0001 01  8409 /run/systemd/journal/stdout
ffff8bd478619980: 00000006 00000000 00000000 0002 01  8412 /run/systemd/journal/socket
ffff8bd478619dc0: 00000011 00000000 00000000 0002 01  8414 /dev/log
ffff8bd376420440: 00000002 00000000 00000000 0002 01 11245 /run/systemd/shutdownd
内容有点多,就显示那么一点。
unix通信域的一般调用socket系统函数的时候传入的是AF_LOCAL/AF_UNIX