fpm_init
2015-11-04 14:23:07 0 举报
fpm_init是一个PHP扩展,用于初始化FastCGI进程管理器(FPM)的实例。它允许您在服务器上运行多个PHP-FPM进程,从而提高应用程序的性能和可靠性。fpm_init函数接受一些参数,如进程ID、命令、环境变量等,以便正确地配置和管理FPM实例。在成功初始化FPM实例后,您可以使用其他fpm相关函数来管理这些进程,例如fpm_get_status()、fpm_kill()等。总之,fpm_init是PHP开发者在部署和维护基于FPM的应用程序时必不可少的一个函数。
作者其他创作
大纲/内容
/* pm */if (wp-config-pm != PM_STYLE_STATIC && wp-config-pm != PM_STYLE_DYNAMIC && wp-config-pm != PM_STYLE_ONDEMAND) {
if (0 fpm_stdio_open_error_log(0))
struct fpm_worker_pool_config_s *config = wp-config;if (!fpm_event_support_edge_trigger()) {if (config-pm_process_idle_timeout listen_backlog listen_backlog = FPM_BACKLOG_DEFAULT;/* certainely useless but proper */config-pm_start_servers = 0;config-pm_min_spare_servers = 0;config-pm_max_spare_servers = 0;
struct fpm_event_module_s *fpm_event_poll_module()
fpm_pagesize = getpagesize();
enum fpm_address_domain fpm_sockets_domain_from_address(char *address)
if (fpm_globals.prefix && *fpm_globals.prefix) {if (!fpm_conf_is_dir(fpm_globals.prefix)) {
if (config-pm_min_spare_servers pm_max_spare_servers pm_min_spare_servers config-pm_max_children || config-pm_max_spare_servers config-pm_max_children) {if (config-pm_max_spare_servers pm_min_spare_servers) {if (config-pm_start_servers pm_start_servers = config-pm_min_spare_servers + ((config-pm_max_spare_servers - config-pm_min_spare_servers) / 2);} else if (config-pm_start_servers pm_min_spare_servers || config-pm_start_servers config-pm_max_spare_servers) {
/* security.limit_extensions */if (!wp-config-security_limit_extensions) {wp-config-security_limit_extensions = strdup(\".php .phar\");
static inline int fpm_use_error_log()
fpm_stdio_init_main()
struct fpm_event_module_s *fpm_event_devpoll_module()
return module ? module-support_edge_trigger : 0;
fpm_php_init_main()
struct fpm_event_module_s *fpm_event_port_module()
int fpm_php_init_main()
int fpm_clock_init()
if (pipe(fpm_globals.send_config_pipe) == -1) {pid_t pid = fork();
/* status */if (wp-config-pm_status_path && *wp-config-pm_status_path) {
/* alert if user is not set only if we are not root*/if (!wp-config-user && !geteuid()) {
/* ping */if (wp-config-ping_path && *wp-config-ping_path) {if (!wp-config-ping_response) {wp-config-ping_response = strdup(\"pong\");
void fpm_pctl_kill_all(int signo)
static int fpm_conf_process_all_pools()
#if HAVE_PORTreturn &port_module;#else return NULL;
{
int fpm_unix_init_main()
fpm_conf_post_process(force_daemon TSRMLS_CC)
void fpm_cleanups_run(int type)
if (0 fpm_clock_init()) {
fpm_conf_process_all_pools()
if (test_conf) {if (test_conf 1) {fpm_conf_dump();fpm_globals.test_successful = 1;
Y
if (0 fpm_systemd_conf())
if (wp && wp-config) {prefix = wp-config-prefix; /* if the wp prefix is not set */if (prefix == NULL) {prefix = fpm_globals.prefix;/* if the global prefix is not set */if (prefix == NULL) {prefix = default_prefix ? default_prefix : PHP_PREFIX;
if (wp-config-process_priority != 64 && (wp-config-process_priority config-process_priority 20)) {
fpm_event_pre_init(fpm_global_config.events_mechanism)
case 0 : /* children */close(fpm_globals.send_config_pipe[0]); /* close the read side of the pipe */
fpm_unix_init_main()
for (wp = fpm_worker_all_pools; wp; wp = wp-next) {if (0 fpm_log_write(wp-config-access_format TSRMLS_CC)) {
static int fpm_conf_post_process(int force_daemon TSRMLS_DC)
struct fpm_event_module_s *fpm_event_epoll_module()
PHP_FUNCTION(openlog);
#if HAVE_SELECT return &select_module;#else return NULL;
int zlog_set_fd(int new_fd)
int fpm_event_pre_init(char *machanism)
if (fpm_globals.config == NULL)
zlog_fd = new_fd;
int fd = open(\"/dev/null\
int zlog_set_level(int new_value)
int fpm_log_open(int reopen)
f (force_daemon = 0) {/* forced from command line options */fpm_global_config.daemonize = force_daemon;fpm_globals.log_level = fpm_global_config.log_level;zlog_set_level(fpm_globals.log_level);if (fpm_global_config.process_max 0) {if (fpm_global_config.process_priority != 64 && (fpm_global_config.process_priority 20)) {if (!fpm_global_config.error_log) {fpm_global_config.error_log = strdup(\"log/php-fpm.log\");
int fpm_event_support_edge_trigger()
#if HAVE_DEVPOLL return &devpoll_module;#else return NULL;
N
ret = fpm_conf_load_ini_file(fpm_globals.config TSRMLS_CC);
switch (pid) {
fpm_log_open(0)
if (!fpm_global_config.syslog_ident) {fpm_global_config.syslog_ident = strdup(\"php-fpm\
static inline void *fpm_array_push(struct fpm_array_s *a)
free(fpm_global_config.pid_file);free(fpm_global_config.error_log);free(fpm_global_config.events_mechanism);fpm_global_config.pid_file = 0;fpm_global_config.error_log = 0;#ifdef HAVE_SYSLOG_Hfree(fpm_global_config.syslog_ident);fpm_global_config.syslog_ident = 0;#endiffree(fpm_globals.config);
#if HAVE_EPOLLreturn &epoll_module;#else return NULL;
/** Return the module configuration*/ struct fpm_event_module_s *fpm_event_kqueue_module()
zlog_level = new_value;
if (fpm_global_config.daemonize) {
int fpm_stdio_init_main()
int fpm_log_write(char *log_format TSRMLS_DC)
ret = (char *) a-data + a-sz * n; return ret;
int fpm_systemd_conf()
int fpm_conf_load_ini_file(char *filename TSRMLS_DC)
TSRMLS_FETCH();php_module_shutdown(TSRMLS_C);sapi_shutdown();
struct fpm_event_module_s *fpm_event_select_module()
#if HAVE_POLL return &poll_module;#else return NULL;
fpm_globals.argc = argc;fpm_globals.argv = argv;if (config && *config) {fpm_globals.config = strdup(config);} fpm_globals.prefix = prefix;fpm_globals.pid = pid;fpm_globals.run_as_root = run_as_root;fpm_globals.force_stderr = force_stderr;
static int fpm_conf_is_dir(char *path)
int fpm_stdio_open_error_log(int reopen)
if (fpm_globals.pid && *fpm_globals.pid) {fpm_global_config.pid_file = strdup(fpm_globals.pid);
struct cleanup_s *c;c = fpm_array_push(&cleanups);
fpm_globals.config = strdup(tmp); efree(tmp);
for (wp = fpm_worker_all_pools; wp; wp = wp-next) {
#if HAVE_KQUEUE return &kqueue_module; #else return NULL;
else if (wp-config-pm == PM_STYLE_ONDEMAND) {
for (wp = fpm_worker_all_pools; wp; wp = wp-next) {if (0 fpm_unix_conf_wp(wp)) {
/* continue as a child */setsid();fpm_globals.parent_pid = getpid();
c-type = type;c-cleanup = cleanup;c-arg = arg;
0 条评论
下一页