set([ 'worker_num'=>3, //设置进程 //'heartbeat_idle_time'=>10,//连接最大的空闲时间 //'heartbeat_check_interval'=>3 //服务器定时检查 'open_length_check'=>1, 'package_length_type'=>'N',//设置包头的长度 'package_length_offset'=>0, //包长度从哪里开始计算 'package_body_offset'=>4, //包体从第几个字节开始计算 'package_max_length'=>1024 * 1024 * 2,]);$server->on("Start",function (){ var_dump(1); //设置主进程的名称 swoole_set_process_name("server-process:master");});//服务关闭时候触发(信号)$server->on("shutdown",function (){});//当管理进程启动时调用它$server->on('ManagerStart',function (){ var_dump(2); //swoole_set_process_name("server-process:manger");});$server->on('WorkerStart',function ($server,$workerId){ // swoole_set_process_name("server-process:worker"); var_dump(3);});//监听事件,连接事件(woker进程当中)$server->on('connect',function ($server,$fd){ echo "新的连接进入:{$fd}".PHP_EOL;});//消息发送过来(woker进程当中)$server->on('receive',function (swoole_server $server, int $fd, int $reactor_id, string $data){ //var_dump("消息发送过来:".$data); //服务端});//消息关闭$server->on('close',function (){ echo "消息关闭".PHP_EOL;});//服务器开启$server->start();echo '123456';
1、进程之间不共享任何状态
2、进程的调度由操作系统完成
3、每个进程都有自己独立的内存空间
4、进程间通讯主要是通过信号传递的方式来实现的,实现方式有多种,信号量、管道、事件等,任何一种方式的通讯效率都需要过内核,导致通讯效率比较低
5、由于是独立的内存空间,上下文切换的时候需要保存先调用栈的信息、cpu各寄存器的信息、虚拟内存、以及打开的相关句柄等信息,所以导致上下文进程间切换开销很大,通讯麻烦。
1、线程之间共享变量,解决了通讯麻烦的问题对于变量的访问需要锁
2、一个进程可以拥有多个线程,但是其中每个线程会共享父进程像操作系统申请资源,这个包括虚拟内存、文件等,由于是共享资源,所以创建线程所需要的系统资源占用比进程小很多,相应的可创建的线程数量也变得相对多很多。
3、另外在调度方面也是由于内存是共享的,所以上下文切换的时候需要保存的东西就像对少一些,这样一来上下文的切换也变得高效。
set([ 'worker_num'=>3, //设置进程 //'heartbeat_idle_time'=>10,//连接最大的空闲时间 //'heartbeat_check_interval'=>3 //服务器定时检查 'open_length_check'=>1, 'package_length_type'=>'N',//设置包头的长度 'package_length_offset'=>0, //包长度从哪里开始计算 'package_body_offset'=>4, //包体从第几个字节开始计算 'package_max_length'=>1024 * 1024 * 2,]);$server->on("Start",function (){ var_dump(1); //设置主进程的名称 swoole_set_process_name("server-process:master");});//服务关闭时候触发(信号)$server->on("shutdown",function (){});//当管理进程启动时调用它$server->on('ManagerStart',function (){ var_dump(2); //swoole_set_process_name("server-process:manger");});$server->on('WorkerStart',function ($server,$workerId){ // swoole_set_process_name("server-process:worker"); var_dump(3);});//监听事件,连接事件(woker进程当中)$server->on('connect',function ($server,$fd){ echo "新的连接进入:{$fd}".PHP_EOL;});//消息发送过来(woker进程当中)$server->on('receive',function (swoole_server $server, int $fd, int $reactor_id, string $data){ //var_dump("消息发送过来:".$data); //服务端});//消息关闭$server->on('close',function (){ echo "消息关闭".PHP_EOL;});//服务器开启$server->start();echo '123456';
以上就是你对swoole的进程,线程知道多少的详细内容,更多请关注其它相关文章!