不懂就问:kill -9主进程之后,主进程内的socket该如何回收?
最近做了一个进程管理,可是在自测的时候发现一个问题。那就是主进程在被kill -9
子进程还存在的情况下,主进程的socket无法释放。再次重启脚本的时候就会提示错误如下:PHP Warning: stream_socket_server(): unable to connect to tcp://0.0.0.0:7865 (Address already in use)
。可是如果把原来的子进程都杀死就不会出现这个问题。可是这是为什么呢?
<?php
// 伪代码如下:
$stream = stream_socket_server($host, $errno, $errstr);
while(true) {
// (1)管理子进程
// (2)accept接收请求&&处理请求
// (3)回收子进程
}
建议研究下
swoole
的进程管理,比自己写更可靠。分析楼主问题的原因是子进程没有回收,地址被占用,因此报错。
多进程下需要设置地址和端口重用,
创建子进程后要有回收机制,防止子进程成为僵尸进程
参考下
blog.csdn.net/yt_php/article/detai...
blog.csdn.net/yt_php/article/detai...