检查上传是否花费太多时间,以防通知用户?

时间:2011-12-17 21:52:26

标签: php file-upload upload timeout

当用户使用慢速Internet连接上传大量文件时,我尝试检测PHP脚本执行超时:我应该只警告用户超时。

我在upload.phpon_shutdown()内使用register_shutdown_function()connection_status(),我在$timeout中创建complete.php标记检测超时。

问题是结果完全错误:我有超时致命错误(没关系),需要致命错误(在函数require($require),好像{{1 }}为空)并且$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

2 个答案:

答案 0 :(得分:0)

register_shutdown_function( 'on_shutdown');  仅在脚本执行后才会运行。

  

“在脚本执行完成或调用exit()之后注册要执行的回调。” - php.net

答案 1 :(得分:0)

而不是尝试超时,您可以检查最大执行时间的值并将其分配给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