mirror of
https://github.com/php/php-src.git
synced 2024-11-25 10:54:15 +08:00
95 lines
2.5 KiB
C
95 lines
2.5 KiB
C
|
|
/* $Id: fpm_status.h 312263 2011-06-18 17:46:16Z felipe $ */
|
|
/* (c) 2009 Jerome Loyet */
|
|
|
|
#ifndef FPM_SCOREBOARD_H
|
|
#define FPM_SCOREBOARD_H 1
|
|
|
|
#include <sys/time.h>
|
|
#ifdef HAVE_TIMES
|
|
#include <sys/times.h>
|
|
#endif
|
|
|
|
#include "fpm_request.h"
|
|
#include "fpm_worker_pool.h"
|
|
#include "fpm_atomic.h"
|
|
|
|
#define FPM_SCOREBOARD_ACTION_SET 0
|
|
#define FPM_SCOREBOARD_ACTION_INC 1
|
|
|
|
struct fpm_scoreboard_proc_s {
|
|
union {
|
|
atomic_t lock;
|
|
char dummy[16];
|
|
};
|
|
int used;
|
|
time_t start_epoch;
|
|
pid_t pid;
|
|
unsigned long requests;
|
|
enum fpm_request_stage_e request_stage;
|
|
struct timeval accepted;
|
|
struct timeval duration;
|
|
time_t accepted_epoch;
|
|
struct timeval tv;
|
|
char request_uri[128];
|
|
char query_string[512];
|
|
char request_method[16];
|
|
size_t content_length; /* used with POST only */
|
|
char script_filename[256];
|
|
char auth_user[32];
|
|
#ifdef HAVE_TIMES
|
|
struct tms cpu_accepted;
|
|
struct timeval cpu_duration;
|
|
struct tms last_request_cpu;
|
|
struct timeval last_request_cpu_duration;
|
|
#endif
|
|
size_t memory;
|
|
};
|
|
|
|
struct fpm_scoreboard_s {
|
|
union {
|
|
atomic_t lock;
|
|
char dummy[16];
|
|
};
|
|
char pool[32];
|
|
int pm;
|
|
time_t start_epoch;
|
|
int idle;
|
|
int active;
|
|
int active_max;
|
|
unsigned long int requests;
|
|
unsigned int max_children_reached;
|
|
int lq;
|
|
int lq_max;
|
|
unsigned int lq_len;
|
|
unsigned int nprocs;
|
|
int free_proc;
|
|
unsigned long int slow_rq;
|
|
struct fpm_scoreboard_proc_s *procs[];
|
|
};
|
|
|
|
int fpm_scoreboard_init_main();
|
|
int fpm_scoreboard_init_child(struct fpm_worker_pool_s *wp);
|
|
|
|
void fpm_scoreboard_update(int idle, int active, int lq, int lq_len, int requests, int max_children_reached, int slow_rq, int action, struct fpm_scoreboard_s *scoreboard);
|
|
struct fpm_scoreboard_s *fpm_scoreboard_get();
|
|
struct fpm_scoreboard_proc_s *fpm_scoreboard_proc_get(struct fpm_scoreboard_s *scoreboard, int child_index);
|
|
|
|
struct fpm_scoreboard_s *fpm_scoreboard_acquire(struct fpm_scoreboard_s *scoreboard, int nohang);
|
|
void fpm_scoreboard_release(struct fpm_scoreboard_s *scoreboard);
|
|
struct fpm_scoreboard_proc_s *fpm_scoreboard_proc_acquire(struct fpm_scoreboard_s *scoreboard, int child_index, int nohang);
|
|
void fpm_scoreboard_proc_release(struct fpm_scoreboard_proc_s *proc);
|
|
|
|
void fpm_scoreboard_free(struct fpm_scoreboard_s *scoreboard);
|
|
|
|
void fpm_scoreboard_child_use(struct fpm_scoreboard_s *scoreboard, int child_index, pid_t pid);
|
|
|
|
void fpm_scoreboard_proc_free(struct fpm_scoreboard_s *scoreboard, int child_index);
|
|
int fpm_scoreboard_proc_alloc(struct fpm_scoreboard_s *scoreboard, int *child_index);
|
|
|
|
#ifdef HAVE_TIMES
|
|
float fpm_scoreboard_get_tick();
|
|
#endif
|
|
|
|
#endif
|