[Linux] 多进程网络编程监听一个端口
2023-02-18 15:41:09 时间
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') . "\n"); fclose($conn); } fclose($socket); } } } while(1){ $pid = pcntl_wait($status); var_dump($pid,$status); sleep(1); }
相关文章
- 万万没想到,go的数据库操作,也能像php一样溜了
- Typora+PicGo+GitHub实现图片快速上传
- Linux计划任务服务程序
- 2022 如何在 GitHub 上搭建个人网站(github.io)
- 虚拟机安装linux无法访问外网解决办法
- 用过 mongodb 吧, 这三个大坑踩过吗?
- 教你配置windows上的windbg,linux上的lldb,打入clr内部这一篇就够了
- MongoDB 在评论中台的实践
- 使用mongodb作为Quartz.Net下的JobStore实现底层的持久化机制
- mongodb之使用explain和hint性能分析和优化
- mongodb 3.x 之实用新功能窥看[2] ——使用$lookup做多表关联处理
- mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理
- 双十一来了,别让你的mongodb宕机了
- GO语言开发环境搭建笔记
- PHP判断网络连通
- 开启phpMyAdmin的远程登录
- PHP_cURL初始化和执行方法
- PHP经典函数收集
- PHP所有函数列表
- php bbcode过滤