Add fastcgi_finish_request where appropriate
authorTyler Anthony Romeo <tylerromeo@gmail.com>
Thu, 21 Nov 2013 23:05:00 +0000 (18:05 -0500)
committerTyler Anthony Romeo <tylerromeo@gmail.com>
Fri, 3 Jan 2014 09:02:52 +0000 (04:02 -0500)
When using PHP-FPM to run PHP on a web server, the function
fastcgi_finish_request is provided, which flushes all response
data to the client and closes the connection, allowing PHP
to perform additional work without delaying the client.

This adds fastcgi_finish_request calls in index.php and api.php
where appropriate and if the function exists, so that the connection
is closed once the output is definitely finished.

Change-Id: Ic67a8956545874e94df5198088c0f4aa58ca376e

api.php
includes/Wiki.php

diff --git a/api.php b/api.php
index 8fab878..5e23585 100644 (file)
--- a/api.php
+++ b/api.php
@@ -72,12 +72,17 @@ $processor = new ApiMain( RequestContext::getMain(), $wgEnableWriteAPI );
 // Process data & print results
 $processor->execute();
 
+if ( function_exists( 'fastcgi_finish_request' ) ) {
+       fastcgi_finish_request();
+}
+
 // Execute any deferred updates
 DeferredUpdates::doUpdates();
 
 // Log what the user did, for book-keeping purposes.
 $endtime = microtime( true );
 wfProfileOut( 'api.php' );
+
 wfLogProfilingData();
 
 // Log the request
index 50bba7b..c809339 100644 (file)
@@ -458,6 +458,9 @@ class MediaWiki {
                try {
                        $this->checkMaxLag();
                        $this->main();
+                       if ( function_exists( 'fastcgi_finish_request' ) ) {
+                               fastcgi_finish_request();
+                       }
                        $this->restInPeace();
                } catch ( Exception $e ) {
                        MWExceptionHandler::handle( $e );