不知道如何解释,所以我会举一个例子:
操作系统:Debian 7,8 / Centos 7我们使用supervisord
观察并强制重新启动Ratchet服务器,该服务器正在端口上监听服务器之间的通信。
通过cron,有一个Update-Script可以自动将更新推送到棘轮服务器。
为此,Cron脚本正在通过supervisorctl stop ratchet
关闭棘轮脚本。
然后更新脚本推送更新的代码,并通过supervisorctl start ratchet
再次启动棘轮服务器。
在这个过程中,棘轮关闭了端口,如果棘轮启动,它应该再次启动。
但有时候端口被阻塞了,我们可以看到有一个运行这个端口的php进程 - 但是我们无法连接到这个端口。
另一个奇怪的事情是,Ratchet服务器是通过php cli启动的,如果端口在stop
/ start
之后被supervisorctl
阻止,则保存端口的进程从php-cli
随机跳转到apache
和python
..
首先我们认为它是因为使用过的动态端口 - 但我们现在尝试了不同的端口,问题再次随机出现。
另一个想法是,supervisorctl stop ratchet
没有清除停止php进程(棘轮),所以我们决定在服务器本身exit()
(什么应该触发所有__destruct()
关闭
有没有人知道如何处理这类问题 - 应该怎样做才能通过php清理关闭并重新打开debian / centos中的端口?
为什么会出现这个问题,为什么端口(不再使用)被随机阻止,直到我们强行打开保持端口打开的进程。
编辑:也许很好知道:如果我们不使用棘轮软件包开销,核心php socket_create
和东西......这个随机区块也会出现。