mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 15:47:58 +00:00
Merge pull request #1388 from mtmail/register-shutdown-function
register shutdown function to handle out-of-memory errors
This commit is contained in:
@@ -21,6 +21,7 @@ function exception_handler_html($exception)
|
|||||||
http_response_code($exception->getCode());
|
http_response_code($exception->getCode());
|
||||||
header('Content-type: text/html; charset=UTF-8');
|
header('Content-type: text/html; charset=UTF-8');
|
||||||
include(CONST_BasePath.'/lib/template/error-html.php');
|
include(CONST_BasePath.'/lib/template/error-html.php');
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
function exception_handler_json($exception)
|
function exception_handler_json($exception)
|
||||||
@@ -28,6 +29,7 @@ function exception_handler_json($exception)
|
|||||||
http_response_code($exception->getCode());
|
http_response_code($exception->getCode());
|
||||||
header('Content-type: application/json; charset=utf-8');
|
header('Content-type: application/json; charset=utf-8');
|
||||||
include(CONST_BasePath.'/lib/template/error-json.php');
|
include(CONST_BasePath.'/lib/template/error-json.php');
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
function exception_handler_xml($exception)
|
function exception_handler_xml($exception)
|
||||||
@@ -36,17 +38,51 @@ function exception_handler_xml($exception)
|
|||||||
header('Content-type: text/xml; charset=utf-8');
|
header('Content-type: text/xml; charset=utf-8');
|
||||||
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
|
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
|
||||||
include(CONST_BasePath.'/lib/template/error-xml.php');
|
include(CONST_BasePath.'/lib/template/error-xml.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function shutdown_exception_handler_html()
|
||||||
|
{
|
||||||
|
$error = error_get_last();
|
||||||
|
if ($error !== null && $error['type'] === E_ERROR) {
|
||||||
|
exception_handler_html(new Exception($error['message'], 500));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function shutdown_exception_handler_xml()
|
||||||
|
{
|
||||||
|
$error = error_get_last();
|
||||||
|
if ($error !== null && $error['type'] === E_ERROR) {
|
||||||
|
exception_handler_xml(new Exception($error['message'], 500));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function shutdown_exception_handler_json()
|
||||||
|
{
|
||||||
|
$error = error_get_last();
|
||||||
|
if ($error !== null && $error['type'] === E_ERROR) {
|
||||||
|
exception_handler_json(new Exception($error['message'], 500));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function set_exception_handler_by_format($sFormat = 'html')
|
function set_exception_handler_by_format($sFormat = null)
|
||||||
{
|
{
|
||||||
if ($sFormat == 'html') {
|
// Multiple calls to register_shutdown_function will cause multiple callbacks
|
||||||
|
// to be executed, we only want the last executed. Thus we don't want to register
|
||||||
|
// one by default without an explicit $sFormat set.
|
||||||
|
|
||||||
|
if (!isset($sFormat)) {
|
||||||
set_exception_handler('exception_handler_html');
|
set_exception_handler('exception_handler_html');
|
||||||
|
} elseif ($sFormat == 'html') {
|
||||||
|
set_exception_handler('exception_handler_html');
|
||||||
|
register_shutdown_function('shutdown_exception_handler_html');
|
||||||
} elseif ($sFormat == 'xml') {
|
} elseif ($sFormat == 'xml') {
|
||||||
set_exception_handler('exception_handler_xml');
|
set_exception_handler('exception_handler_xml');
|
||||||
|
register_shutdown_function('shutdown_exception_handler_xml');
|
||||||
} else {
|
} else {
|
||||||
set_exception_handler('exception_handler_json');
|
set_exception_handler('exception_handler_json');
|
||||||
|
register_shutdown_function('shutdown_exception_handler_json');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// set a default
|
// set a default
|
||||||
|
|||||||
Reference in New Issue
Block a user