前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Linux] 多进程网络编程监听一个端口

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

作者头像
唯一Chat
发布2019-12-12 16:47:05
1.4K0
发布2019-12-12 16:47:05
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

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

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

代码语言:javascript
复制
<?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') . "\n");
                fclose($conn);
            }
            fclose($socket);
        }
        
    }
}

while(1){
    $pid = pcntl_wait($status);
    var_dump($pid,$status);
    sleep(1);
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档