请问webman中我想在master进程中运行自定义代码,比如访问一个webapi,根据返回结果来定义一些环境、参数或者退出服务,在哪里加比较优雅呢,谢谢~
为了保证整个服务稳定,master进程不允许有任何业务代码。 设置bootstrap,每个进程启动的时候会执行bootstrap的启动项
https://www.workerman.net/doc/webman/others/bootstrap.html
那可否这样,我自定义一个进程,从webapi获取数据后通知master进程重启、退出或者其他一些操作?
可以。 如果你要restart重启的话,自定义的控制进程需要单独一个脚本启动,因为自己无法重启自己。 reload或者其它操作可以一起启动。
也就是说,只能在 自定义进程中 使用exec来控制,而不能在php代码中获取到类似app的应用对象然后app->exit()什么的命令么?
重启有两种: 第一种:php start.php restart,主进程也重启那种 这种不支持自己重启自己。需要没有亲缘进程去执行才行。
第二种:子进程重启,主进程不重启,也就是reload reload只需要在业务代码中执行 posix_kill( posix_getppid(), SIGUSR1); 即可
不确认你具体要做什么 ,具体要的是哪种重启。
重启进程的需求是啥呢???
想做一种架构,一台主服务器控制一些子服务器去做一些操作,比如停止、重启某一台子服务器的服务这种,子服务器会过一段时间查询主服务器的命令,然后去执行。。貌似不太好弄,自定义进程好像不能通知主进程去执行停止、重启这种方式?
哦哦,大佬你这系统听着就很牛,加油
很简单的需求,只是有点不常见,社区搜了很多没搜到,等真大佬回复问题~
在子服务器中各自启动一个 http server,主服务器如果需要某个子服务器去停止或者重启,就发送一个 http 请求过去,子服务器的 http server 接收到主服务器的指令就直接用 shell_exec 或者 exec 之类的系统调用函数去执行相对应的指令即可。 注意:子服务器的 http server 不参与重启或者停止之类的,就只是一个接收指令和执行指令的接口。
http server
http
shell_exec
exec
嗯,这也是个思路,可以和walkor老大说的一样单独做个脚本访问主服务器也行,不过我更趋向于webman自己去控制自身的启动和停止,如果实现不了只好按新思路来做了。。
如果只有一个服务,停止了,那么下次去手动启动?
嗯,这个有其他办法~
为了保证整个服务稳定,master进程不允许有任何业务代码。
设置bootstrap,每个进程启动的时候会执行bootstrap的启动项
https://www.workerman.net/doc/webman/others/bootstrap.html
那可否这样,我自定义一个进程,从webapi获取数据后通知master进程重启、退出或者其他一些操作?
可以。
如果你要restart重启的话,自定义的控制进程需要单独一个脚本启动,因为自己无法重启自己。
reload或者其它操作可以一起启动。
也就是说,只能在 自定义进程中 使用exec来控制,而不能在php代码中获取到类似app的应用对象然后app->exit()什么的命令么?
重启有两种:
第一种:php start.php restart,主进程也重启那种
这种不支持自己重启自己。需要没有亲缘进程去执行才行。
第二种:子进程重启,主进程不重启,也就是reload
reload只需要在业务代码中执行 posix_kill( posix_getppid(), SIGUSR1); 即可
不确认你具体要做什么 ,具体要的是哪种重启。
重启进程的需求是啥呢???
想做一种架构,一台主服务器控制一些子服务器去做一些操作,比如停止、重启某一台子服务器的服务这种,子服务器会过一段时间查询主服务器的命令,然后去执行。。貌似不太好弄,自定义进程好像不能通知主进程去执行停止、重启这种方式?
哦哦,大佬你这系统听着就很牛,加油
很简单的需求,只是有点不常见,社区搜了很多没搜到,等真大佬回复问题~
在子服务器中各自启动一个
http server
,主服务器如果需要某个子服务器去停止或者重启,就发送一个http
请求过去,子服务器的http server
接收到主服务器的指令就直接用shell_exec
或者exec
之类的系统调用函数去执行相对应的指令即可。注意:子服务器的
http server
不参与重启或者停止之类的,就只是一个接收指令和执行指令的接口。嗯,这也是个思路,可以和walkor老大说的一样单独做个脚本访问主服务器也行,不过我更趋向于webman自己去控制自身的启动和停止,如果实现不了只好按新思路来做了。。
如果只有一个服务,停止了,那么下次去手动启动?
嗯,这个有其他办法~