Я пытаюсь определить тайм-аут выполнения PHP-скрипта, когда пользователь загружает много файлов при медленном интернет-соединении: я должен только предупредить пользователя о тайм-ауте.
Я использую register_shutdown_function()
вместе с connection_status()
в моем upload.php
и внутри on_shutdown()
я создаю флаг $timeout
для использования в complete.php
для определения времени ожидания.
проблема в том, что результаты совершенно неверны : у меня произошла фатальная ошибка тайм-аута (это нормально), требуется фатальная ошибка (в функции require($require)
, как если бы $require
был пуст) и complete.php
не показывается.
Жаль, я не могу понять, как я ошибаюсь.Это (короткая версия) upload.php
скрипт:
<?php
register_shutdown_function('on_shutdown');
$require = 'complete.php'; // Complete page
sleep(50); // fake timeout for testing
// Do stuff, save files, insert into database...
// This always invoked
function on_shutdown()
{
global $require;
$timeout = connection_status() == 2;
require($require);
}
?>
... и это complete.php
:
<!DOCTYPE html>
<html>
<head>
<title>Upload complete</title>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
</head>
<body>
<?php if ($timeout) { ?><!-- is timeout? -->
<p>Upload process took too much time, results are unpredictable.</p>
<?php } ?>
</body>
</html>