Open matyhtf opened 5 years ago
支持,很有用。
支持支持
mark
业务代码层面也能实现相应的功能。
正打算实现reload 自定义进程,这样只需加hook SWOOLE_HOOK_BEFORE_SERVER_RELOAD,再写reload自定义进程的逻辑。
@hhxsv5 自定义进程的生命周期与 Master Manager 是相同的,因此不会接受 reload 信号。你这个需求属于特殊需求,因此需要增加一些 php 代码来实现。
@hhxsv5 自定义进程的生命周期与 Master Manager 是相同的,因此不会接受 reload 信号。你这个需求属于特殊需求,因此需要增加一些 php 代码来实现。
是的,有了这个hook后,自己实现自定义进程的reload逻辑
有了这个功能很多进程监控更方便了
支持
和监听Server
事件冲突了吧,是否有些多余
有很多场景,我们希望不修改 PHP 代码就可以注入一些 Hook 函数到
Server
或Client
中。使用Hook
机制就可以支持这些功能。API
addHook
即可添加一个Hook
,$hook_type
指定在什么情况下执行,$function
是回调的函数,成功设置返回hook
的$id
addHook
的第三个参数可以指定优先级,数值越大表示优先级越高,会先于优先级低的Hook
执行,最大为PHP_INT_MAX
delHook
可移除此钩子上面的例子就是添加了一个服务器启动的
Hook
,在$server->start()
之前,这个函数会被回调。Hook Type
目前会先增加
5
种Hook
,在新版本迭代中,会根据实际需要增加更多的Hook Type
SWOOLE_HOOK_BEFORE_SERVER_START
在$server->start()
之前调用SWOOLE_HOOK_BEFORE_WORKER_START
在onWorkerStart
回调之前调用SWOOLE_HOOK_BEFORE_SERVER_SHUTDOWN
在服务器收到SIGTERM
信号后,关闭之前调用SWOOLE_HOOK_BEFORE_WORKER_STOP
在Worker
进程收到SIGTERM
信号后,即将推出之前调用SWOOLE_HOOK_BEFORE_SERVER_RELOAD
在收到SIGUSR1
信号后,重启Worker
进程之前调用应用场景
例如下列场景就可以使用
Hook
无侵入地实现:Web Admin
,可以在服务器启动前使用addListener()
添加一个Http
的端口提供Admin Web
界面Remote Shell
可以额外添加一个端口,实现远程登录,调试服务器Agent
可以在服务器启动前使用addProcess
添加一个自定义进程做为Agent
Reload User Process
,reload
功能对User Process
是无效的,可以利用这个Hook
在重启Worker
时同时重启用户进程pid file
,在启动时可以检测是否设置了pid_file
,如果没有,可以设置一个