请问如何webman的master进程中运行自定义代码

深林孤鹰

请问webman中我想在master进程中运行自定义代码,比如访问一个webapi,根据返回结果来定义一些环境、参数或者退出服务,在哪里加比较优雅呢,谢谢~

560 3 2
3个回答

walkor 打赏

为了保证整个服务稳定,master进程不允许有任何业务代码。
设置bootstrap,每个进程启动的时候会执行bootstrap的启动项

https://www.workerman.net/doc/webman/others/bootstrap.html

  • 深林孤鹰 2024-06-18

    那可否这样,我自定义一个进程,从webapi获取数据后通知master进程重启、退出或者其他一些操作?

  • walkor 2024-06-18

    可以。
    如果你要restart重启的话,自定义的控制进程需要单独一个脚本启动,因为自己无法重启自己。
    reload或者其它操作可以一起启动。

  • 深林孤鹰 2024-06-18

    也就是说,只能在 自定义进程中 使用exec来控制,而不能在php代码中获取到类似app的应用对象然后app->exit()什么的命令么?

  • walkor 2024-06-18

    重启有两种:
    第一种:php start.php restart,主进程也重启那种
    这种不支持自己重启自己。需要没有亲缘进程去执行才行。

    第二种:子进程重启,主进程不重启,也就是reload
    reload只需要在业务代码中执行 posix_kill( posix_getppid(), SIGUSR1); 即可

    不确认你具体要做什么 ,具体要的是哪种重启。

  • tanhongbin 2024-06-19

    重启进程的需求是啥呢???

  • 深林孤鹰 2024-06-19

    想做一种架构,一台主服务器控制一些子服务器去做一些操作,比如停止、重启某一台子服务器的服务这种,子服务器会过一段时间查询主服务器的命令,然后去执行。。貌似不太好弄,自定义进程好像不能通知主进程去执行停止、重启这种方式?

  • tanhongbin 2024-06-19

    哦哦,大佬你这系统听着就很牛,加油

  • 深林孤鹰 2024-06-19

    很简单的需求,只是有点不常见,社区搜了很多没搜到,等真大佬回复问题~

efnic

原来做过交易,抛砖引玉!
【客户自定义服务器】可以通过改动进程配置文件config/process.php,比如请求http接口获取要启动的业务进程,合并数组后return即可。

【遥控器】webman项目的根目录,单独新建一个脚本文件,启动一个worker,异步连接到中央服务器等待接收重启指令。
其他自由发挥,比如接收 进程配置,直接改写 上述的进程配置文件,然后给重启指令即可。

  • efnic 2024-10-15

    另外,所有在composer.json文件的 autoload.files 加载的文件,都会优先载入并运行;
    意思就是,所有 autoload.files 文件加载运行后,才轮到 webman的start.php

  • 深林孤鹰 2024-10-17

    感谢大佬回复,不过有两个小问题,1是composer.json文件的 autoload.files 加载的文件是可以等待HTTP阻塞调用并返回数据后再去运行webman的start.php吧?2是【遥控器】中,启动的这个worker好像是子进程,子进程不能调用restart去重启父进程。。

  • efnic 2024-10-17

    注意看题目,遥控器】webman项目的根目录,单独新建一个脚本文件,启动一个worker;这个是独立的两个进程(master进程、worker进程),当然可以调用webman的 start.php

  • efnic 2024-10-17

    回复:1是composer.json文件的 autoload.files 加载的文件是可以等待HTTP阻塞调用并返回数据后再去运行webman的start.php吧

    答案:是的

efnic

【遥控器】webman项目的根目录,单独新建一个脚本文件,启动一个worker;这个脚本是单独启动的,与webman 没有亲缘关系。

  • 暂无评论
×
🔝