本文主要了解swoole进程,如何创建子进程,父子进程的关系如何查看,注意需要先安装swoole扩展,需在Linux环境
1.pro.php文件中创建一个子进程,注意里面的参数,查看swoole手册,exec()方法参数注意路径不要写错
<?php
$process = new Swoole\Process(function (Swoole\Process $pro){
//执行一个外部程序 类似 php websocket.php
$pro->exec('/www/server/php/80/bin/php', array(__DIR__.'/websocket.php'));
},false);
$pid = $process->start();
echo $pid.PHP_EOL;
Swoole\Process :: wait();
2.websocket.php文件创建WebSocket服务监听端口
<?php
//创建WebSocket Server对象,监听0.0.0.0:9501端口。
$ws = new Swoole\WebSocket\Server('0.0.0.0', 9501);
$ws->set([
'enable_static_handler'=>true,
'document_root'=>"/www/wwwroot/swoole/demo-4",
'worker_num' => 4, // 进程数
]);
//监听WebSocket连接打开事件。
$ws->on('Open', function ($ws, $request) {
$ws->push($request->fd, "hello, welcome\n");
});
//监听WebSocket消息事件。
$ws->on('Message', function ($ws, $frame) {
echo "Message: {$frame->data}\n";
$ws->push($frame->fd, "server: {$frame->data}");
});
//监听WebSocket连接关闭事件。
$ws->on('Close', function ($ws, $fd) {
echo "client-{$fd} is closed\n";
});
echo "服务启动...\n";
$ws->start();
3.Linx终端运行pro.php文件(注:切换到自已的路径),命令:php pro.php
4.上面的子进程ID是指websocket.php运行的进程,监听端口9501
5.查看子进程的父进程,命令:ps aux | grep pro.php
6.查看父子进程的关系,命令: pstree -p 85512,其中85513下面的子进程是worker_num属性设置的,我设置为4就是4个进程
7.查看websocket文件下面的进程关系,命令: ps aft |grep websocket