Проверьте, занимает ли загрузка слишком много времени и в случае уведомления пользователя? - PullRequest
0 голосов
/ 18 декабря 2011

Я пытаюсь определить тайм-аут выполнения 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>

Ответы [ 2 ]

0 голосов
/ 18 декабря 2011

вместо попытки с тайм-аутом, вы можете проверить значения максимального времени выполнения и присвоить ему 0 для длительного выполнения, но безопасность 0 не рекомендуется

$maxExeTime = ini_get('max_execution_time'); //this will get maxumum excetion time for PHP script in seconds
echo $maxExeTime;

, а также вы можете проверить ниже глобальногопеременная также

$postMs = ini_get('post_max_size'); //this will get maxumum size of data to be accepted in $_POST
$upMaxFiles = ini_get('upload_max_filesize'); //this will get maxumum allowed file size for file upload
$noFilesUp = ini_get('max_file_uploads'); //this will get number of files to be load on    single request
0 голосов
/ 18 декабря 2011

register_shutdown_function ( 'on_shutdown'); Будет работать только после того, как скрипт будет выполнен.

"Регистрирует обратный вызов, который будет выполнен после завершения выполнения скрипта или вызова метода exit ()." - php.net

...