Посмотрите на ссылку.
http://prefetch.net/blog/index.php/2007/01/02/measuring-apache-request-processing-time/
Показывает, как настроить apache для регистрации времени, когда запрос был получен apache.
Затем вы можете использовать апонцию apache_request_headers в PHP и извлечь это время.
http://php.net/manual/en/function.apache-request-headers.php
Может быть, таким образом, вы можете выяснить время между тем, когда apache начинает получать файл, и когда он передает обработку php?
Возможно, нужно провести некоторое тестирование, поскольку я не пробовал этого. Дайте мне знать, если это работает ...:)
ОБНОВЛЕНИЕ ПО @ GustavBertram :
Примечание. Я отредактировал ответ вместо своего собственного вопроса, поскольку хочу задокументировать попытку отдельно для каждого ответа.
Я включил mod_headers в Apache и добавил следующий файл конфигурации:
#/etc/apache2/mods-available/headers.conf
RequestHeader set X-Request-Received: %t
Затем я обновил свой скрипт:
<form action="#" enctype="multipart/form-data" method="post">
Upload:<input type="file" name="datafile" size="40">
<input type="submit" value="Send">
</form>
<?php
// Get the request headers
$REQUEST_HEADERS = apache_request_headers();
// Extract $t value from header
parse_str($REQUEST_HEADERS['X-Request-Received']);
// Massage string to get float in seconds
$received_time = substr_replace($t, '.', 10, 0);
// Get the current microtime as float in seconds
$current_time = microtime(1);
$upload_time = $current_time - $received_time;
echo $received_time . " \n <BR />";
echo $current_time . " \n <BR />";
echo $upload_time;
Я протестировал его как на локальном компьютере, так и на удаленном компьютере в сети с файлом размером 700 МБ.