-
Notifications
You must be signed in to change notification settings - Fork 30
/
upload.php
57 lines (50 loc) · 1.74 KB
/
upload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Upload speed check
*
* @package tool_heartbeat
* @copyright 2017 Brendan Heywood <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*
* This is an upload handler which accepts data and then reports on how long
* it took. It can be used standalone or in conjunction with:
*
* php cli/testupload.php
*
*/
// @codingStandardsIgnoreStart
require(__DIR__ . '/../../../config.php');
// @codingStandardsIgnoreEnd
tool_heartbeat\lib::validate_ip_against_config();
// @codingStandardsIgnoreStart
// Ignore Statement to skip codechecker needing require config.php first.
$starttime = microtime(true);
// @codingStandardsIgnoreEnd
$putdata = fopen("php://input", "r");
$totalbytes = 0;
while ($data = fread($putdata, 1024 * 4)) {
$size = strlen($data);
$totalbytes += $size;
}
fclose($putdata);
$endtime = microtime(true);
$duration = $endtime - $starttime; // In seconds.
printf("Size = %.1fMB, Time = %.3fs, %.1fMbps ",
$totalbytes / 1024 / 1024,
$duration,
$totalbytes * 8 / $duration / 1000 / 1000
);