diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-11-14 16:26:14 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-11-14 16:26:14 +0300 |
commit | 53ea09e84dcc5eb199f732c7621633a8f34ce3e7 (patch) | |
tree | d32e861ac1366ced988d83688cb9b82839bccdc9 | |
parent | 8bda22592e4a3b1c1735c6ca25d7f0404d511e53 (diff) | |
download | php-git-53ea09e84dcc5eb199f732c7621633a8f34ce3e7.tar.gz |
Added possiblity to avoid signal handlers reinitialization on each request.
-rw-r--r-- | Zend/zend_signal.c | 7 | ||||
-rw-r--r-- | Zend/zend_signal.h | 1 |
2 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c index c4d4c8d3c9..6adca165d5 100644 --- a/Zend/zend_signal.c +++ b/Zend/zend_signal.c @@ -322,8 +322,10 @@ void zend_signal_activate(void) memcpy(&SIGG(handlers), &global_orig_handlers, sizeof(global_orig_handlers)); - for (x = 0; x < sizeof(zend_sigs) / sizeof(*zend_sigs); x++) { - zend_signal_register(zend_sigs[x], zend_signal_handler_defer); + if (SIGG(reset)) { + for (x = 0; x < sizeof(zend_sigs) / sizeof(*zend_sigs); x++) { + zend_signal_register(zend_sigs[x], zend_signal_handler_defer); + } } SIGG(active) = 1; @@ -365,6 +367,7 @@ static void zend_signal_globals_ctor(zend_signal_globals_t *zend_signal_globals) size_t x; memset(zend_signal_globals, 0, sizeof(*zend_signal_globals)); + zend_signal_globals->reset = 1; for (x = 0; x < sizeof(zend_signal_globals->pstorage) / sizeof(*zend_signal_globals->pstorage); ++x) { zend_signal_queue_t *queue = &zend_signal_globals->pstorage[x]; diff --git a/Zend/zend_signal.h b/Zend/zend_signal.h index 54ca32e31b..c42a3991a5 100644 --- a/Zend/zend_signal.h +++ b/Zend/zend_signal.h @@ -59,6 +59,7 @@ typedef struct _zend_signal_globals_t { int running; /* in signal handler execution */ int active; /* internal signal handling is enabled */ zend_bool check; /* check for replaced handlers on shutdown */ + zend_bool reset; /* reset signal handlers on each request */ zend_signal_entry_t handlers[NSIG]; zend_signal_queue_t pstorage[ZEND_SIGNAL_QUEUE_SIZE], *phead, *ptail, *pavail; /* pending queue */ } zend_signal_globals_t; |