Table of Contents
A brief analysis of streams in PHP
Home Backend Development PHP Tutorial A brief analysis of streams in PHP_PHP tutorial

A brief analysis of streams in PHP_PHP tutorial

Jul 13, 2016 am 09:47 AM
php streams main article flow

A brief analysis of streams in PHP

This article mainly introduces a brief analysis of streams in PHP. This article explains the overview of streams and the basic knowledge of streams. , php:// wrapper, Stream Contexts and other contents, friends in need can refer to it

Overview

Streams are a feature introduced in PHP 4.3, mainly to unify the working methods of files, sockets and other similar resources. PHP 4.3 has been around for a long time, but many programmers seem to be unable to use streams in PHP correctly, including me of course. I have encountered the use of streams in some programs before, such as php://input, but I have never had a chance to sort it out. Today I will sort out this part of the knowledge.

Streams are resources provided by PHP that can be used transparently by us, and streams are a very powerful tool. Proper use of streams in programs can take our programs to a new level.

Convection is described in the PHP manual as follows:

Copy the code. The code is as follows:

 Streams were introduced with PHP 4.3.0 as a way of generalizing file, network, data compression, and other operations which share a common set of functions and uses. In its simplest definition, a stream is a resource object which exhibits streamable behavior. That is, it can be read from or written to in a linear fashion, and may be able to fseek() to an arbitrary locations within the stream.

Each stream implements a wrapper, which contains some additional code to handle special protocols and encodings. PHP provides some built-in wrappers, and we can also easily create and register custom wrappers. We can even use contexts and filters to alter and enhance wrappers.

Basic knowledge of streaming

The form of stream in PHP is: ://. is the name of the wrapper, and the content of depends on the different wrapper syntax.

The default wrapper is file://, which means that the stream is used every time we access the file system. For example, we can use the following two methods to read files: readfile('/path/to/somefile.txt') and readfile('file:///path/to/somefile.txt'). Use these two way to read the file, you can get the same result.

As mentioned earlier, PHP provides some built-in wrappers, protocols and filters. To see which wrappers are installed on our machine, we can use the following functions:

Copy the code. The code is as follows:

var_dump(stream_get_transports());

var_dump(stream_get_wrappers());

var_dump(stream_get_filters());

 ?>

My local environment output is as follows:

Copy the code. The code is as follows:

 array (size=8)

 0 => string 'tcp' (length=3)

 1 => string 'udp' (length=3)

 2 => string 'unix' (length=4)

 3 => string 'udg' (length=3)

 4 => string 'ssl' (length=3)

 5 => string 'sslv3' (length=5)

 6 => string 'sslv2' (length=5)

 7 => string 'tls' (length=3)

array (size=12)

 0 => string 'https' (length=5)

 1 => string 'ftps' (length=4)

 2 => string 'compress.zlib' (length=13)

 3 => string 'compress.bzip2' (length=14)

 4 => string 'php' (length=3)

 5 => string 'file' (length=4)

 6 => string 'glob' (length=4)

 7 => string 'data' (length=4)

 8 => string 'http' (length=4)

 9 => string 'ftp' (length=3)

 10 => string 'phar' (length=4)

 11 => string 'zip' (length=3)

array (size=12)

 0 => string 'zlib.*' (length=6)

 1 => string 'bzip2.*' (length=7)

 2 => string 'convert.iconv.*' (length=15)

 3 => string 'string.rot13' (length=12)

 4 => string 'string.toupper' (length=14)

 5 => string 'string.tolower' (length=14)

 6 => string 'string.strip_tags' (length=17)

 7 => string 'convert.*' (length=9)

 8 => string 'consumed' (length=8)

 9 => string 'dechunk' (length=7)

 10 => string 'mcrypt.*' (length=8)

 11 => string 'mdecrypt.*' (length=10)

In addition, we can customize or use third-party streams.

 php://wrapper

PHP has its own wrapper for accessing input/output (I/O) streams. PHP has basic php://stdin, php://stdout, php://stderr wrappers corresponding to the default I/O resources. There is also a php://input stream, which is a read-only stream, and the content of the stream is the data requested by the post. This stream is especially useful when we put data in the body of a post request to request a remote service.

Since php://input is the most commonly used stream, here are some knowledge points:

Copy the code. The code is as follows:

 1.php://input can read unprocessed POST data. Compared to $HTTP_RAW_POST_DATA, it puts less pressure on memory and does not require special php.ini settings. php://input cannot be used for enctype=multipart/form-data

2. Only when the Content-Type is application/x-www-form-urlencoded and the submission method is the POST method, the $_POST data and the php://input data are "consistent" (with quotes to indicate their formats) Inconsistent, consistent content). In other cases, they are inconsistent

 3.php://input cannot read GET data. This is because the _GET data is written as query_path in the PATH field of the http request header (header), rather than in the body part of the http request.

Stream Contexts

This part of the content has almost never been encountered in programming, and it is difficult for me to research it. If you are interested, you can search it yourself.

Summary

Streams are not used much in daily programming. When using xml-rpc, the server side obtains client data, mainly through the PHP input stream input. This is a common scenario. Hackers may also use this part of the content when they invade the website.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1025896.htmlTechArticleA brief analysis of streams in PHP This article mainly introduces a brief analysis of streams in PHP ,This article explains the overview of streams, basic knowledge of streams, php:// wrapper, stream contexts (Stream Contexts), etc...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles