mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
Fixed exit at FPM startup on fpm_resources_prepare
This commit is contained in:
parent
606d61bd1c
commit
6e1f77ef6b
1
NEWS
1
NEWS
@ -174,6 +174,7 @@ PHP NEWS
|
||||
- PHP-FPM SAPI:
|
||||
. Added xml format to the status page. (fat)
|
||||
. Remove timestamp in logs written by children processes. (fat)
|
||||
. Fixed exit at FPM startup on fpm_resources_prepare() errors. (fat)
|
||||
|
||||
- Reflection extension:
|
||||
. Fixed bug #54347 (reflection_extension does not lowercase module function
|
||||
|
@ -90,10 +90,16 @@ int fpm_run(int *max_requests) /* {{{ */
|
||||
if (!is_parent) {
|
||||
goto run_child;
|
||||
}
|
||||
|
||||
/* handle error */
|
||||
if (is_parent == 2) {
|
||||
fpm_pctl(FPM_PCTL_STATE_TERMINATING, FPM_PCTL_ACTION_SET);
|
||||
fpm_event_loop(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* run event loop forever */
|
||||
fpm_event_loop();
|
||||
fpm_event_loop(0);
|
||||
|
||||
run_child: /* only workers reach this point */
|
||||
|
||||
|
@ -350,7 +350,6 @@ static void fpm_parent_resources_use(struct fpm_child_s *child) /* {{{ */
|
||||
|
||||
int fpm_children_make(struct fpm_worker_pool_s *wp, int in_event_loop, int nb_to_spawn, int is_debug) /* {{{ */
|
||||
{
|
||||
int enough = 0;
|
||||
pid_t pid;
|
||||
struct fpm_child_s *child;
|
||||
int max;
|
||||
@ -365,12 +364,11 @@ int fpm_children_make(struct fpm_worker_pool_s *wp, int in_event_loop, int nb_to
|
||||
max = wp->config->pm_max_children;
|
||||
}
|
||||
|
||||
while (!enough && fpm_pctl_can_spawn_children() && wp->running_children < max) {
|
||||
while (fpm_pctl_can_spawn_children() && wp->running_children < max) {
|
||||
child = fpm_resources_prepare(wp);
|
||||
|
||||
if (!child) {
|
||||
enough = 1;
|
||||
break;
|
||||
return 2;
|
||||
}
|
||||
|
||||
pid = fork();
|
||||
@ -385,11 +383,9 @@ int fpm_children_make(struct fpm_worker_pool_s *wp, int in_event_loop, int nb_to
|
||||
|
||||
case -1 :
|
||||
zlog(ZLOG_SYSERROR, "fork() failed");
|
||||
enough = 1;
|
||||
|
||||
fpm_resources_discard(child);
|
||||
|
||||
break; /* dont try any more on error */
|
||||
return 2;
|
||||
|
||||
default :
|
||||
child->pid = pid;
|
||||
|
@ -235,7 +235,7 @@ int fpm_event_init_main() /* {{{ */
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
void fpm_event_loop() /* {{{ */
|
||||
void fpm_event_loop(int err) /* {{{ */
|
||||
{
|
||||
static struct fpm_event_s signal_fd_event;
|
||||
|
||||
@ -249,9 +249,12 @@ void fpm_event_loop() /* {{{ */
|
||||
|
||||
/* add timers */
|
||||
fpm_pctl_heartbeat(NULL, 0, NULL);
|
||||
fpm_pctl_perform_idle_server_maintenance_heartbeat(NULL, 0, NULL);
|
||||
|
||||
zlog(ZLOG_NOTICE, "ready to handle connections");
|
||||
if (!err) {
|
||||
fpm_pctl_perform_idle_server_maintenance_heartbeat(NULL, 0, NULL);
|
||||
|
||||
zlog(ZLOG_NOTICE, "ready to handle connections");
|
||||
}
|
||||
|
||||
while (1) {
|
||||
struct fpm_event_queue_s *q, *q2;
|
||||
|
@ -22,7 +22,7 @@ struct fpm_event_s {
|
||||
short which; /* type of event */
|
||||
};
|
||||
|
||||
void fpm_event_loop();
|
||||
void fpm_event_loop(int err);
|
||||
void fpm_event_fire(struct fpm_event_s *ev);
|
||||
int fpm_event_init_main();
|
||||
int fpm_event_set(struct fpm_event_s *ev, int fd, int flags, void (*callback)(struct fpm_event_s *, short, void *), void *arg);
|
||||
|
Loading…
Reference in New Issue
Block a user