是否可以知道(服务器端)文件上传所需的时间?我有一个图片上传API,在我的回复中,我想返回上传时间(不包括脚本执行时间).
我想是的,有一个$_SERVER['REQUEST_TIME']变量表示HTTP请求的开始,所以在脚本的最开头:
$upload_time = time() - $_SERVER['REQUEST_TIME'];
Run Code Online (Sandbox Code Playgroud)
结果将在几秒钟内完成.
看起来这个方法实际上工作得很好:
<?php session_start(); // must be at the top ?>
<form id="upload-form" enctype="multipart/form-data" method="post">
<input type="file" name="datafile" size="40">
<input type="submit" value="Send">
</form>
<script type="text/javascript">
$(function()
{
$('#upload-form').submit(function()
{
$.ajax({
url: 'start-timer.php',
type: 'POST',
context: this,
success: function() { this.submit(); },
});
return false;
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
<?php session_start();
$_SESSION['time'] = microtime(true);
Run Code Online (Sandbox Code Playgroud)
<?php
session_start();
header('content-type: text/plain; charset=utf-8');
if( ! isset($_FILES['file'])
|| ! isset($_SESSION['time'])
|| $_FILES['file']['error'] !== UPLOAD_ERR_OK
|| ! is_uploaded_file($_FILES['file']['tmp_name']))
{
exit('stuff went wrong...');
}
$time = microtime(true) - $_SESSION['time'];
unset($_SESSION['time']);
echo round($time, 3).'s';
Run Code Online (Sandbox Code Playgroud)
工作样本:http://samples.geekality.net/upload-timer