php worker是什么意思,php
看php-fpm源码worker进程创建部分,有一点没明白。
php-fpm初始启动时,执行流程如下
main -> fpm_run -> fpm_children_create_initial -> fpm_children_make
之后worker进程会执行main函数中fpm_run调用之后的逻辑,进入无限循环。但是在ondemand模式下,初始化并未创建worker进程,而是添加了IO事件回调,监听listen-socket的可读事件,有新连接时才会创建worker进程,参考下文代码,但是worker进程创建之后,worker进程的执行逻辑是什么呢?看代码直接就return了呢。
希望有了解的帮忙指点一下吧,谢谢
// fpm/fpm_children.c
int fpm_children_create_initial(struct fpm_worker_pool_s *wp) /* {{{ */
{
if (wp->config->pm == PM_STYLE_ONDEMAND) {
....
memset(wp->ondemand_event, 0, sizeof(struct fpm_event_s));
fpm_event_set(wp->ondemand_event, wp->listening_socket, FPM_EV_READ | FPM_EV_EDGE, fpm_pctl_on_socket_accept, wp);
wp->socket_event_set = 1;
fpm_event_add(wp->ondemand_event, 0);
return 1;
}
return fpm_children_make(wp, 0 /* not in event loop yet */, 0, 1);
}
// fpm/fpm_process_ctl.c
void fpm_pctl_on_socket_accept(struct fpm_event_s *ev, short which, void *arg)
{
....
wp->warn_max_children = 0;
fpm_children_make(wp, 1, 1, 1);
if (fpm_globals.is_child) {
return;
}
}
发布评论