Рубрики
Uncategorized

PHP Способ получения содержимого тела HTTP

Автор оригинала: David Wong.

Иногда нам нужно проанализировать данные в соответствии с форматом в заголовке, например, загрузить JSON вместо текста. Здесь используется концепция потока ввода | вывода PHP.

PHP предоставляет различные потоки ввода-вывода (IO), которые обеспечивают доступ к потокам ввода-вывода PHP, стандартным дескрипторам ввода-вывода и ошибок, временным потокам файлов, сохраненным в памяти и на диске, и фильтрам, которые могут работать с другими файловыми ресурсами для чтения/записи.

Эта статья посвящена php://ввод. Для получения дополнительной информации, пожалуйста, посетите официальный веб-сайт: Нажмите, чтобы просмотреть официальный веб-сайт.

Php://ввод-это поток только для чтения, который может получить доступ к исходным запрошенным данным. В случае запросов POST лучше всего использовать php://input вместо $HTTP_RAW_POST_DATA, поскольку это не зависит от конкретных инструкций php.ini. Более того, в этом случае $HTTP_RAW_POST_DATA по умолчанию не заполняется, что потенциально требует меньше памяти, чем активация always_populate_raw_post_data. Php://ввод недопустим, когда.

Код моделирования

// server.php
switch($_SERVER['CONTENT_TYPE']){
 case 'application/json':
 // Here the data is retrieved from the input side
 $body = file_get_contents('php://input');
 Echo'This is a json:', $body;
 break;
 // ...
}
// client_web.php, note that Axios is used here
// ...
service = axios.create({
 baseURL: 'mydomain',
 validateStatus:function(status){
 if(500 >= status) alert('server fails');
 }
});

// Send a request
service.post(url, {
 // ...
 headers: {'Content-Type':'application/json'},
 data:'{"code":100}'
 // ...
});

// The global settings are all right.
service.interceptors.request.use(function(config){
 // Set the request header here
 config.headers['Content-Type'] = 'application/json';
 return config;
}, function(err){});

Расширенное чтение

Ниже приведены официальные стенограммы

Поток ввода | вывода PHP разделен на: php://stdin, php://stdout и php://stderr.

Php://stdin, php://stdout и php://stderr обеспечивают прямой доступ к соответствующим входным или выходным потокам процессов PHP. Поток данных ссылается на дублированный файловый дескриптор, поэтому, если вы откроете php://stdin и отключите его позже, вы просто закроете дубликат, и фактический указанный STDIN останется неизменным. Обратите внимание, что PHP ведет себя таким образом со многими ошибками вплоть до PHP 5.2.1. Рекомендуется просто использовать константы STDIN, STDOUT и STDERR вместо того, чтобы открывать эти пакеты вручную.

Php://stdin доступен только для чтения, php://stdout и php://stderr доступны только для записи.

php://вывод

Php://вывод-это поток данных только для записи, который позволяет выполнять запись в выходной буфер таким же образом, как печать и эхо.

php://fd

Php://fd обеспечивает прямой доступ к указанному файловому дескриптору. Например, php://fd/3 относится к файловому дескриптору 3.

Php://память и php://темп

Php://память и php://temp-это потоки данных, похожие на обертки файлов, которые позволяют считывать и записывать временные данные. Единственное различие между ними заключается в том, что php://память всегда хранит данные в памяти, в то время как php://temp хранит данные во временных файлах, когда объем памяти достигает заданного предела (по умолчанию 2 МБ). Местоположение временного файла определяется так же, как и sys_get_temp_dir().

Ограничением памяти php://temp можно управлять, добавив/maxmemory:NN, который представляет собой максимальный объем данных, сохраняемых в памяти в байтах, и использует временные файлы, когда он превышает.

php://фильтр

Php://фильтр-это мета-инкапсулятор, предназначенный для фильтрации приложений при открытии потоков данных. Это очень полезно для функций файлов “все в одном”, таких как readfile (), file () и file_get_contents (), которые не имеют возможности применять другие фильтры до считывания содержимого потока данных.

Цель php://filter использует следующие параметры в качестве части своего пути. Составные цепочки фильтров могут быть заданы на пути. Подробное использование этих параметров можно найти в конкретных примерах.

Приведенный выше PHP – способ получения основного содержимого HTTP состоит в том, чтобы поделиться всем содержимым с вами, я надеюсь дать вам ссылку, и я надеюсь, что вы будете больше поддерживать developpaer.