php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
fpm.c
Go to the documentation of this file.
1 /* (c) 2007,2008 Andrei Nigmatulin */
2
3#include "fpm_config.h"
4
5#include <stdlib.h> /* for exit */
6
7#include "fpm.h"
8#include "fpm_children.h"
9#include "fpm_signals.h"
10#include "fpm_env.h"
11#include "fpm_events.h"
12#include "fpm_cleanup.h"
13#include "fpm_php.h"
14#include "fpm_sockets.h"
15#include "fpm_unix.h"
16#include "fpm_process_ctl.h"
17#include "fpm_conf.h"
18#include "fpm_worker_pool.h"
19#include "fpm_scoreboard.h"
20#include "fpm_stdio.h"
21#include "fpm_log.h"
22#include "zlog.h"
23
25 .parent_pid = 0,
26 .argc = 0,
27 .argv = NULL,
28 .config = NULL,
29 .prefix = NULL,
30 .pid = NULL,
31 .running_children = 0,
32 .error_log_fd = 0,
33 .log_level = 0,
34 .listening_socket = 0,
35 .max_requests = 0,
36 .is_child = 0,
37 .test_successful = 0,
38 .heartbeat = 0,
39 .run_as_root = 0,
40 .force_stderr = 0,
41 .send_config_pipe = {0, 0},
42};
43
44enum fpm_init_return_status fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root, int force_daemon, int force_stderr) /* {{{ */
45{
46 fpm_globals.argc = argc;
47 fpm_globals.argv = argv;
48 if (config && *config) {
49 fpm_globals.config = strdup(config);
50 }
51 fpm_globals.prefix = prefix;
52 fpm_globals.pid = pid;
53 fpm_globals.run_as_root = run_as_root;
54 fpm_globals.force_stderr = force_stderr;
55
56 if (0 > fpm_php_init_main() ||
57 0 > fpm_stdio_init_main() ||
58 0 > fpm_conf_init_main(test_conf, force_daemon) ||
59 0 > fpm_unix_init_main() ||
61 0 > fpm_pctl_init_main() ||
62 0 > fpm_env_init_main() ||
67 0 > fpm_event_init_main()) {
68
69 if (fpm_globals.test_successful) {
70 return FPM_INIT_EXIT_OK;
71 } else {
72 zlog(ZLOG_ERROR, "FPM initialization failed");
73 return FPM_INIT_ERROR;
74 }
75 }
76
77 if (0 > fpm_conf_write_pid()) {
78 zlog(ZLOG_ERROR, "FPM initialization failed");
79 return FPM_INIT_ERROR;
80 }
81
83 zlog(ZLOG_NOTICE, "fpm is running, pid %d", (int) fpm_globals.parent_pid);
84
85 return FPM_INIT_CONTINUE;
86}
87/* }}} */
88
89/* children: return listening socket
90 parent: never return */
91int fpm_run(int *max_requests) /* {{{ */
92{
93 struct fpm_worker_pool_s *wp;
94
95 /* create initial children in all pools */
96 for (wp = fpm_worker_all_pools; wp; wp = wp->next) {
97 int is_parent;
98
99 is_parent = fpm_children_create_initial(wp);
100
101 if (!is_parent) {
102 goto run_child;
103 }
104
105 /* handle error */
106 if (is_parent == 2) {
109 }
110 }
111
112 /* run event loop forever */
114
115run_child: /* only workers reach this point */
116
118
119 *max_requests = fpm_globals.max_requests;
120 return fpm_globals.listening_socket;
121}
122/* }}} */
int fpm_run(int *max_requests)
Definition fpm.c:91
struct fpm_globals_s fpm_globals
Definition fpm.c:24
enum fpm_init_return_status fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root, int force_daemon, int force_stderr)
Definition fpm.c:44
fpm_init_return_status
Definition fpm.h:37
@ FPM_INIT_ERROR
Definition fpm.h:38
@ FPM_INIT_EXIT_OK
Definition fpm.h:40
@ FPM_INIT_CONTINUE
Definition fpm.h:39
int fpm_children_create_initial(struct fpm_worker_pool_s *wp)
int fpm_children_init_main(void)
void fpm_cleanups_run(int type)
Definition fpm_cleanup.c:36
@ FPM_CLEANUP_CHILD
Definition fpm_cleanup.h:10
int fpm_conf_init_main(int test_conf, int force_daemon)
Definition fpm_conf.c:1836
int fpm_conf_write_pid(void)
Definition fpm_conf.c:1251
int fpm_env_init_main(void)
Definition fpm_env.c:219
int fpm_event_init_main(void)
Definition fpm_events.c:316
void fpm_event_loop(int err)
Definition fpm_events.c:353
int fpm_php_init_main(void)
Definition fpm_php.c:236
void fpm_pctl(int new_state, int action)
int fpm_pctl_init_main(void)
@ FPM_PCTL_STATE_TERMINATING
@ FPM_PCTL_ACTION_SET
int fpm_scoreboard_init_main(void)
int fpm_signals_init_main(void)
int fpm_sockets_init_main(void)
int fpm_stdio_init_final(void)
Definition fpm_stdio.c:63
int fpm_stdio_init_main(void)
Definition fpm_stdio.c:27
int fpm_unix_init_main(void)
Definition fpm_unix.c:567
struct fpm_worker_pool_s * fpm_worker_all_pools
int fpm_worker_pool_init_main(void)
#define NULL
Definition gdcache.h:45
#define prefix
char * pid
Definition fpm.h:52
int run_as_root
Definition fpm.h:61
char * config
Definition fpm.h:50
int argc
Definition fpm.h:48
char ** argv
Definition fpm.h:49
int max_requests
Definition fpm.h:57
int force_stderr
Definition fpm.h:62
struct fpm_worker_pool_s * next
@ ZLOG_ERROR
Definition zlog.h:45
@ ZLOG_NOTICE
Definition zlog.h:43
#define zlog(flags,...)
Definition zlog.h:9