检测文件上传所需的时间(PHP)

mak*_*eee 5 php upload

是否可以知道(服务器端)文件上传所需的时间?我有一个图片上传API,在我的回复中,我想返回上传时间(不包括脚本执行时间).

dev*_*ler 8

我想是的,有一个$_SERVER['REQUEST_TIME']变量表示HTTP请求的开始,所以在脚本的最开头:

$upload_time = time() - $_SERVER['REQUEST_TIME'];
Run Code Online (Sandbox Code Playgroud)

结果将在几秒钟内完成.

  • 正如您所说,确实是服务器配置不正确。但是,我也得到了一些有用的答案。另一个问题上的Apache标头解决方案实际上允许使用microtime,它的粒度比“ REQUEST_TIME”要细。我将要求合并两个问题。 (2认同)

Svi*_*ish 6

看起来这个方法实际上工作得很好:

  1. 将ajax请求(在表单发布之前)发送到存储会话时间戳的服务器
  2. 发表表格
  3. 检查接收端的差异:)

HTML

<?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)

启动timer.php

<?php session_start();
$_SESSION['time'] = microtime(true);
Run Code Online (Sandbox Code Playgroud)

upload.php的

<?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