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;

}

}