[Linux] 多进程网络编程监听一个端口

摘要:
SO_REUSEPORT支持多个进程或线程绑定到同一个端口。每个进程都可以创建自己的套接字、绑定、侦听和接受独立且相等的地址和端口。让多个进程监听同一个端口。每个进程的acceptpackets是不同的。当建立新的连接时,内核将只唤醒一个进程来接受,并确保唤醒平衡?

SO_REUSEPORT支持多个进程或者线程绑定到同一端口

每个进程可以自己创建socket、bind、listen、accept相同的地址和端口,各自是独立平等的。让多进程监听同一个端口,各个进程中accept socket fd不一样,有新连接建立时,内核只会唤醒一个进程来accept,并且保证唤醒的均衡性

<?php
$context=stream_context_create();
stream_context_set_option($context, 'socket', 'so_reuseport', 1);
for($i=0;$i<2;$i++){
    $pid = pcntl_fork();
    if($pid == 0){
        while(true){
            $socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr,STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,$context);
            while ($conn = @stream_socket_accept($socket,5)) {
                fwrite($conn, getmypid().':时间:' . date('Y-m-d H:i:s') . "
");
                fclose($conn);
            }
            fclose($socket);
        }
        
    }
}

while(1){
    $pid = pcntl_wait($status);
    var_dump($pid,$status);
    sleep(1);
}

免责声明:文章转载自《[Linux] 多进程网络编程监听一个端口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】Anaconda安装与使用Android 自己实现更新下载自动安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

十三、【ADC】ADC读取S5p6818电源值

一、分析原理图及特性                                                          图1                                                                            图2 S5p6818的ADC0是去读取电源电压,通过ADC0将模...

Linux下Apache配置HTTPS功能

Apache配置HTTPS功能转https://www.cnblogs.com/liaojiafa/p/6028816.html 一、yum 安装openssl和openssl-devel,httpd-devel 二、生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥 openssl genrsa -des3 1024 > /...

linux系统统计某一行出现特定字符的次数

1、使用vim编辑器创建测试数据 [root@linuxprobe test]# cat a.txt ewetrte fsdfgf dfghghj dsffgd hgfdwe 2、统计每一行f出现的次数 [root@linuxprobe test]# awk -F "f" '{print NF-1}'a.txt ## -F 设定读入分隔符,NF-1显示每...

Linux(Ubuntu)设置环境变量(转载)

http://blog.csdn.net/wumingxing0228/article/details/6050175 环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell。对于UNIX,可能是CShelll。环境变量是通过Shell命令来设置的,设置好的环境变...

linux进程状态详解(转)

  Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。  在下文将对进程的 R、S、D、T、Z、X 六种状态做个说明。 PROCESS STATE CODES        Here are the different values that the s, stat and state...

Linux系统声卡问题

问题:Linux系统中有声卡设备,但是听不到声音 一、声卡驱动没有安装   1、通过插拔声卡查出声卡驱动   2、在相应的kernel中编译内核 修改保存.config文件,然后进行编译 make -j 10 make modules make modules_install reboot重启机器后可以“lsmod”查看驱动 3、将2号声卡改为默认声卡:...