Получить размер POST-запроса в PHP

Есть ли способ получить размер тела POST-запроса в PHP?

Solutions Collecting From Web of "Получить размер POST-запроса в PHP"

Так просто как:

$size = (int) $_SERVER['CONTENT_LENGTH']; 

Обратите внимание, что $ _SERVER ['CONTENT_LENGTH'] устанавливается только в запросах HTTP через метод POST. Это необработанное значение заголовка Content-Length. См .: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

В случае загрузки файлов, если вы хотите получить общий размер загруженных файлов , вы должны перебирать элементы $ _FILE, чтобы суммировать каждый $ file ['size']. Точный общий размер не соответствует необработанному значению Content-Length из-за накладных расходов на кодирование данных POST.

Также обратите внимание, что для ошибок файла вы должны проверить код $ file ['error'] каждого элемента $ _FILES. Например, частичная загрузка вернет ошибку UPLOAD_ERR_PARTIAL, а пустые загрузки вернут UPLOAD_ERR_NO_FILE. См. Документацию по загрузке файлов в руководстве по PHP.

Если вы пытаетесь выяснить, не удалось ли загрузить файл, вы должны использовать обработку ошибок PHP-файлов, как показано на приведенной ниже ссылке. Это самый надежный способ обнаружения ошибок при загрузке файлов:
http://us3.php.net/manual/en/features.file-upload.errors.php

Если вам нужен размер запроса POST без загрузки файлов , вы можете сделать это примерно так:

 $request = http_build_query($_POST); $size = strlen($request); 

Я предполагаю, что он находится в $_SERVER['CONTENT_LENGTH'] .

И если вам нужно это для обнаружения ошибок, загляните в $_FILES['filename']['error'] .

Это может сработать:

 $bytesInPostRequestBody = strlen(file_get_contents('php://input')); // This does not count the bytes of the request's headers on its body. 

Я думаю, вы ищете $HTTP_RAW_POST_DATA