diff options
author | Remi Collet <fedora@famillecollet.com> | 2014-02-28 10:56:33 +0100 |
---|---|---|
committer | Remi Collet <fedora@famillecollet.com> | 2014-02-28 10:56:33 +0100 |
commit | d284eecbe0ed687db9c307753f9a6fcb35827c43 (patch) | |
tree | eea6f893b8f1a7d7c3feac1203ccca35bcf06a8a /php-5.5.0-systemd.patch | |
parent | 85ff99087b33995f15de968e2e89c81ef446d8d6 (diff) |
PHP 5.6.0alpha3
Diffstat (limited to 'php-5.5.0-systemd.patch')
-rw-r--r-- | php-5.5.0-systemd.patch | 301 |
1 files changed, 0 insertions, 301 deletions
diff --git a/php-5.5.0-systemd.patch b/php-5.5.0-systemd.patch deleted file mode 100644 index 3da0f83..0000000 --- a/php-5.5.0-systemd.patch +++ /dev/null @@ -1,301 +0,0 @@ -diff -up ../sapi/fpm/config.m4.systemd ../sapi/fpm/config.m4 ---- ../sapi/fpm/config.m4.systemd 2012-12-05 11:40:54.000000000 +0100 -+++ ../sapi/fpm/config.m4 2013-05-20 09:44:23.436365510 +0200 -@@ -563,6 +563,26 @@ if test "$PHP_FPM" != "no"; then - [ --with-fpm-group[=GRP] Set the group for php-fpm to run as. For a system user, this - should usually be set to match the fpm username (default: nobody)], nobody, no) - -+ PHP_ARG_WITH(fpm-systemd,, -+ [ --with-fpm-systemd Activate systemd integration], no, no) -+ -+ if test "$PHP_FPM_SYSTEMD" != "no" ; then -+ AC_CHECK_LIB(systemd-daemon, sd_notify, SYSTEMD_LIBS="-lsystemd-daemon") -+ AC_CHECK_HEADERS(systemd/sd-daemon.h, [HAVE_SD_DAEMON_H="yes"], [HAVE_SD_DAEMON_H="no"]) -+ if test $HAVE_SD_DAEMON_H = "no" || test -z "${SYSTEMD_LIBS}"; then -+ AC_MSG_ERROR([Your system does not support systemd.]) -+ else -+ AC_DEFINE(HAVE_SYSTEMD, 1, [FPM use systemd integration]) -+ PHP_FPM_SD_FILES="fpm/fpm_systemd.c" -+ PHP_ADD_LIBRARY(systemd-daemon) -+ php_fpm_systemd=notify -+ fi -+ else -+ php_fpm_systemd=simple -+ fi -+ PHP_SUBST_OLD(php_fpm_systemd) -+ AC_DEFINE_UNQUOTED(PHP_FPM_SYSTEMD, "$php_fpm_systemd", [fpm systemd service type]) -+ - if test -z "$PHP_FPM_USER" -o "$PHP_FPM_USER" = "yes" -o "$PHP_FPM_USER" = "no"; then - php_fpm_user="nobody" - else -@@ -631,7 +651,7 @@ if test "$PHP_FPM" != "no"; then - fpm/events/port.c \ - " - -- PHP_SELECT_SAPI(fpm, program, $PHP_FPM_FILES $PHP_FPM_TRACE_FILES, $PHP_FPM_CFLAGS, '$(SAPI_FPM_PATH)') -+ PHP_SELECT_SAPI(fpm, program, $PHP_FPM_FILES $PHP_FPM_TRACE_FILES $PHP_FPM_SD_FILES, $PHP_FPM_CFLAGS, '$(SAPI_FPM_PATH)') - - case $host_alias in - *aix*) -diff -up ../sapi/fpm/fpm/fpm_conf.c.systemd ../sapi/fpm/fpm/fpm_conf.c ---- ../sapi/fpm/fpm/fpm_conf.c.systemd 2013-05-02 14:36:45.000000000 +0200 -+++ ../sapi/fpm/fpm/fpm_conf.c 2013-05-20 09:59:29.632807378 +0200 -@@ -45,6 +45,10 @@ - #include "fpm_log.h" - #include "fpm_events.h" - #include "zlog.h" -+#ifdef HAVE_SYSTEMD -+#include "fpm_systemd.h" -+#endif -+ - - #define STR2STR(a) (a ? a : "undefined") - #define BOOL2STR(a) (a ? "yes" : "no") -@@ -73,6 +77,10 @@ struct fpm_global_config_s fpm_global_co - #endif - .process_max = 0, - .process_priority = 64, /* 64 means unset */ -+#ifdef HAVE_SYSTEMD -+ .systemd_watchdog = 0, -+ .systemd_interval = -1, /* -1 means not set */ -+#endif - }; - static struct fpm_worker_pool_s *current_wp = NULL; - static int ini_recursion = 0; -@@ -100,6 +108,9 @@ static struct ini_value_parser_s ini_fpm - { "rlimit_files", &fpm_conf_set_integer, GO(rlimit_files) }, - { "rlimit_core", &fpm_conf_set_rlimit_core, GO(rlimit_core) }, - { "events.mechanism", &fpm_conf_set_string, GO(events_mechanism) }, -+#ifdef HAVE_SYSTEMD -+ { "systemd_interval", &fpm_conf_set_time, GO(systemd_interval) }, -+#endif - { 0, 0, 0 } - }; - -@@ -1152,6 +1163,12 @@ static int fpm_conf_post_process(int for - fpm_global_config.error_log = strdup("log/php-fpm.log"); - } - -+#ifdef HAVE_SYSTEMD -+ if (0 > fpm_systemd_conf()) { -+ return -1; -+ } -+#endif -+ - #ifdef HAVE_SYSLOG_H - if (!fpm_global_config.syslog_ident) { - fpm_global_config.syslog_ident = strdup("php-fpm"); -@@ -1540,6 +1557,9 @@ static void fpm_conf_dump() /* {{{ */ - zlog(ZLOG_NOTICE, "\trlimit_files = %d", fpm_global_config.rlimit_files); - zlog(ZLOG_NOTICE, "\trlimit_core = %d", fpm_global_config.rlimit_core); - zlog(ZLOG_NOTICE, "\tevents.mechanism = %s", fpm_event_machanism_name()); -+#ifdef HAVE_SYSTEMD -+ zlog(ZLOG_NOTICE, "\tsystemd_interval = %ds", fpm_global_config.systemd_interval/1000); -+#endif - zlog(ZLOG_NOTICE, " "); - - for (wp = fpm_worker_all_pools; wp; wp = wp->next) { -diff -up ../sapi/fpm/fpm/fpm_conf.h.systemd ../sapi/fpm/fpm/fpm_conf.h ---- ../sapi/fpm/fpm/fpm_conf.h.systemd 2012-12-05 11:40:39.000000000 +0100 -+++ ../sapi/fpm/fpm/fpm_conf.h 2013-05-20 09:44:23.438365518 +0200 -@@ -40,6 +40,10 @@ struct fpm_global_config_s { - int rlimit_files; - int rlimit_core; - char *events_mechanism; -+#ifdef HAVE_SYSTEMD -+ int systemd_watchdog; -+ int systemd_interval; -+#endif - }; - - extern struct fpm_global_config_s fpm_global_config; -diff -up ../sapi/fpm/fpm/fpm_events.c.systemd ../sapi/fpm/fpm/fpm_events.c ---- ../sapi/fpm/fpm/fpm_events.c.systemd 2012-12-05 11:40:39.000000000 +0100 -+++ ../sapi/fpm/fpm/fpm_events.c 2013-05-20 09:44:23.439365522 +0200 -@@ -29,6 +29,10 @@ - #include "events/port.h" - #include "events/kqueue.h" - -+#ifdef HAVE_SYSTEMD -+#include "fpm_systemd.h" -+#endif -+ - #define fpm_event_set_timeout(ev, now) timeradd(&(now), &(ev)->frequency, &(ev)->timeout); - - static void fpm_event_cleanup(int which, void *arg); -@@ -361,6 +365,10 @@ void fpm_event_loop(int err) /* {{{ */ - - zlog(ZLOG_DEBUG, "%zu bytes have been reserved in SHM", fpm_shm_get_size_allocated()); - zlog(ZLOG_NOTICE, "ready to handle connections"); -+ -+#ifdef HAVE_SYSTEMD -+ fpm_systemd_heartbeat(NULL, 0, NULL); -+#endif - } - - while (1) { -diff -up ../sapi/fpm/fpm/fpm_systemd.c.systemd ../sapi/fpm/fpm/fpm_systemd.c ---- ../sapi/fpm/fpm/fpm_systemd.c.systemd 2013-05-20 09:44:23.439365522 +0200 -+++ ../sapi/fpm/fpm/fpm_systemd.c 2013-05-20 09:44:23.439365522 +0200 -@@ -0,0 +1,113 @@ -+#include "fpm_config.h" -+ -+#include <sys/types.h> -+#include <systemd/sd-daemon.h> -+ -+#include "fpm.h" -+#include "fpm_clock.h" -+#include "fpm_worker_pool.h" -+#include "fpm_scoreboard.h" -+#include "zlog.h" -+#include "fpm_systemd.h" -+ -+ -+static void fpm_systemd() /* {{{ */ -+{ -+ static unsigned long int last=0; -+ struct fpm_worker_pool_s *wp; -+ unsigned long int requests=0, slow_req=0; -+ int active=0, idle=0; -+ -+ -+ for (wp = fpm_worker_all_pools; wp; wp = wp->next) { -+ if (wp->scoreboard) { -+ active += wp->scoreboard->active; -+ idle += wp->scoreboard->idle; -+ requests += wp->scoreboard->requests; -+ slow_req += wp->scoreboard->slow_rq; -+ } -+ } -+ -+/* -+ zlog(ZLOG_DEBUG, "systemd %s (Processes active:%d, idle:%d, Requests:%lu, slow:%lu, Traffic:%.3greq/sec)", -+ fpm_global_config.systemd_watchdog ? "watchdog" : "heartbeat", -+ active, idle, requests, slow_req, ((float)requests - last) * 1000.0 / fpm_global_config.systemd_interval); -+*/ -+ -+ if (0 > sd_notifyf(0, "READY=1\n%s" -+ "STATUS=Processes active: %d, idle: %d, Requests: %lu, slow: %lu, Traffic: %.3greq/sec", -+ fpm_global_config.systemd_watchdog ? "WATCHDOG=1\n" : "", -+ active, idle, requests, slow_req, ((float)requests - last) * 1000.0 / fpm_global_config.systemd_interval)) { -+ zlog(ZLOG_NOTICE, "failed to notify status to systemd"); -+ } -+ -+ last = requests; -+} -+/* }}} */ -+ -+void fpm_systemd_heartbeat(struct fpm_event_s *ev, short which, void *arg) /* {{{ */ -+{ -+ static struct fpm_event_s heartbeat; -+ -+ if (fpm_globals.parent_pid != getpid()) { -+ return; /* sanity check */ -+ } -+ -+ if (which == FPM_EV_TIMEOUT) { -+ fpm_systemd(); -+ -+ return; -+ } -+ -+ if (0 > sd_notifyf(0, "READY=1\n" -+ "STATUS=Ready to handle connections\n" -+ "MAINPID=%lu", -+ (unsigned long) getpid())) { -+ zlog(ZLOG_WARNING, "failed to notify start to systemd"); -+ } else { -+ zlog(ZLOG_DEBUG, "have notify start to systemd"); -+ } -+ -+ /* first call without setting which to initialize the timer */ -+ if (fpm_global_config.systemd_interval > 0) { -+ fpm_event_set_timer(&heartbeat, FPM_EV_PERSIST, &fpm_systemd_heartbeat, NULL); -+ fpm_event_add(&heartbeat, fpm_global_config.systemd_interval); -+ zlog(ZLOG_NOTICE, "systemd monitor interval set to %dms", fpm_global_config.systemd_interval); -+ } else { -+ zlog(ZLOG_NOTICE, "systemd monitor disabled"); -+ } -+} -+/* }}} */ -+ -+int fpm_systemd_conf() /* {{{ */ -+{ -+ char *watchdog; -+ int interval = 0; -+ -+ watchdog = getenv("WATCHDOG_USEC"); -+ if (watchdog) { -+ /* usec to msec, and half the configured delay */ -+ interval = (int)(atol(watchdog) / 2000L); -+ zlog(ZLOG_DEBUG, "WATCHDOG_USEC=%s, interval=%d", watchdog, interval); -+ } -+ -+ if (interval > 1000) { -+ if (fpm_global_config.systemd_interval > 0) { -+ zlog(ZLOG_WARNING, "systemd_interval option ignored"); -+ } -+ zlog(ZLOG_NOTICE, "systemd watchdog configured to %.3gsec", (float)interval / 1000.0); -+ fpm_global_config.systemd_watchdog = 1; -+ fpm_global_config.systemd_interval = interval; -+ -+ } else if (fpm_global_config.systemd_interval < 0) { -+ /* not set => default value */ -+ fpm_global_config.systemd_interval = FPM_SYSTEMD_DEFAULT_HEARTBEAT; -+ -+ } else { -+ /* sec to msec */ -+ fpm_global_config.systemd_interval *= 1000; -+ } -+ return 0; -+} -+/* }}} */ -+ -diff -up ../sapi/fpm/fpm/fpm_systemd.h.systemd ../sapi/fpm/fpm/fpm_systemd.h ---- ../sapi/fpm/fpm/fpm_systemd.h.systemd 2013-05-20 09:44:23.440365526 +0200 -+++ ../sapi/fpm/fpm/fpm_systemd.h 2013-05-20 09:44:23.440365526 +0200 -@@ -0,0 +1,13 @@ -+#ifndef FPM_SYSTEMD_H -+#define FPM_SYSTEMD_H 1 -+ -+#include "fpm_events.h" -+ -+/* 10s (in ms) heartbeat for systemd status */ -+#define FPM_SYSTEMD_DEFAULT_HEARTBEAT (10000) -+ -+void fpm_systemd_heartbeat(struct fpm_event_s *ev, short which, void *arg); -+int fpm_systemd_conf(); -+ -+#endif -+ -diff -up ../sapi/fpm/php-fpm.conf.in.systemd ../sapi/fpm/php-fpm.conf.in ---- ../sapi/fpm/php-fpm.conf.in.systemd 2013-05-20 09:53:48.718512646 +0200 -+++ ../sapi/fpm/php-fpm.conf.in 2013-05-20 09:58:26.831568875 +0200 -@@ -105,7 +105,15 @@ - ; - /dev/poll (Solaris >= 7) - ; - port (Solaris >= 10) - ; Default Value: not set (auto detection) --; events.mechanism = epoll -+;events.mechanism = epoll -+ -+; When FPM is build with systemd integration, specify the interval, -+; in second, between health report notification to systemd. -+; Set to 0 to disable. -+; Available Units: s(econds), m(inutes), h(ours) -+; Default Unit: seconds -+; Default value: 10 -+;systemd_interval = 10 - - ;;;;;;;;;;;;;;;;;;;; - ; Pool Definitions ; -diff -up ../sapi/fpm/php-fpm.service.in.systemd ../sapi/fpm/php-fpm.service.in ---- ../sapi/fpm/php-fpm.service.in.systemd 2012-12-05 11:40:39.000000000 +0100 -+++ ../sapi/fpm/php-fpm.service.in 2013-05-20 09:44:23.440365526 +0200 -@@ -3,6 +3,7 @@ Description=The PHP FastCGI Process Mana - After=syslog.target network.target - - [Service] -+Type=@php_fpm_systemd@ - PIDFile=@localstatedir@/run/php-fpm.pid - ExecStart=@sbindir@/php-fpm --nodaemonize --fpm-config @sysconfdir@/php-fpm.conf - ExecReload=/bin/kill -USR2 $MAINPID |