Request handling: bei zu hohem Speicherverbrauch erst flushen, dann beenden
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 27 Apr 2016 12:45:46 +0000 (14:45 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 27 Apr 2016 12:47:27 +0000 (14:47 +0200)
Wenn sich das Script sofort beendet, dann werden Daten nicht an den
Webserverprozess geschickt und der wiederum schickt eine unschönen
Internal Server Error an den Client.

Daher zuerst den Request vollständig an den Server schicken und damit
den laufenden Request abschließen, bevor sich der Prozess beendet.

dispatcher.fpl

index 5e384ce..cd910cc 100755 (executable)
@@ -64,7 +64,10 @@ $dispatcher->pre_startup_checks;
 my $request = FCGI::Request();
 while ($request->Accept() >= 0) {
   $dispatcher->handle_request($request);
-  exit if _memory_usage_is_too_high();
+  if (_memory_usage_is_too_high()) {
+    $request->Flush();
+    last;
+  }
 }
 
 1;