+++ /dev/null
-Related links:
-
-http://bugs.php.net/bug.php?id=43224 this patch
-
-http://bugs.php.net/bug.php?id=41593
-http://bugs.php.net/bug.php?id=36158
-http://php-fpm.anight.org/
-
-test script too:
-<?php
-echo php_sapi_name(), ' running ', PHP_VERSION, "<br>\n";
-$i = 0;
-while ($i < 35) {
- echo (++$i), "<br>\n";
- flush();
- sleep(1);
-}
-echo "end!<br>\n";
-?>
-
---- php5.3-200711090930/sapi/cgi/cgi_main.c 2007-11-01 13:32:38.000000000 +0200
-+++ php5.3-200711090930-graceful/sapi/cgi/cgi_main.c 2007-11-09 13:34:22.974559020 +0200
-@@ -101,6 +101,9 @@
- */
- static int parent = 1;
-
-+/* Socket we are listening on incoming connections */
-+static int fcgi_fd = 0;
-+
- /**
- * Process group
- */
-@@ -1221,6 +1224,21 @@
- exit(0);
- }
-
-+/**
-+ * Graceful shutdown. Close listening sockets.
-+ */
-+void fastcgi_graceful_shutdown(int signal)
-+{
-+#ifdef DEBUG_FASTCGI
-+ fprintf(stderr, "FastCGI graceful shutdown, pid %d\n", getpid());
-+#endif
-+
-+ /* Close the listening socket so new processes can reuse the same port */
-+ closesocket(fcgi_fd);
-+ fcgi_fd = 0;
-+}
-+
-+
- PHP_INI_BEGIN()
- STD_PHP_INI_ENTRY("cgi.rfc2616_headers", "0", PHP_INI_ALL, OnUpdateBool, rfc2616_headers, php_cgi_globals_struct, php_cgi_globals)
- STD_PHP_INI_ENTRY("cgi.nph", "0", PHP_INI_ALL, OnUpdateBool, nph, php_cgi_globals_struct, php_cgi_globals)
-@@ -1328,7 +1346,6 @@
- int requests = 0;
- int fastcgi = fcgi_is_fastcgi();
- char *bindpath = NULL;
-- int fcgi_fd = 0;
- fcgi_request request;
- int repeats = 1;
- int benchmark = 0;
-@@ -1579,9 +1596,13 @@
- parent = 0;
-
- /* don't catch our signals */
-- sigaction(SIGTERM, &old_term, 0);
- sigaction(SIGQUIT, &old_quit, 0);
- sigaction(SIGINT, &old_int, 0);
-+
-+ /* call graceful shutdown handler for SIGTERM */
-+ act.sa_flags = 0;
-+ act.sa_handler = fastcgi_graceful_shutdown;
-+ sigaction(SIGTERM, &act, &old_term);
- break;
- case -1:
- perror("php (pre-forking)");