Chuỗi để truyền phát php

Là một phần trong quá trình tích hợp tiêu chuẩn thông báo PSR-7HTTP, AWS SDK dành cho PHP sử dụng PSR-7 StreamInterface bên trong dưới dạng trừu tượng hóa trên các luồng PHP. Bất kỳ lệnh nào có trường đầu vào được xác định là đốm màu, chẳng hạn như tham số Body trên S3. Lệnh PutObject, có thể được thỏa mãn với một chuỗi, tài nguyên luồng PHP hoặc một phiên bản của

use GuzzleHttp\Psr7;

$a = Psr7\stream_for('abc, ');
$b = Psr7\stream_for('123.');
$composed = new Psr7\AppendStream([$a, $b]);

$composed->addStream(Psr7\stream_for(' Above all listen to me'));

echo $composed(); // abc, 123. Above all listen to me.
0

SDK nắm quyền sở hữu bất kỳ tài nguyên luồng PHP thô nào được cung cấp dưới dạng tham số đầu vào cho lệnh. Luồng được sử dụng và đóng thay cho bạn

Nếu bạn cần chia sẻ luồng giữa hoạt động SDK và mã của mình, hãy bọc luồng đó trong phiên bản

use GuzzleHttp\Psr7;

$a = Psr7\stream_for('abc, ');
$b = Psr7\stream_for('123.');
$composed = new Psr7\AppendStream([$a, $b]);

$composed->addStream(Psr7\stream_for(' Above all listen to me'));

echo $composed(); // abc, 123. Above all listen to me.
1 trước khi đưa luồng đó làm tham số lệnh. SDK tiêu thụ luồng, vì vậy mã của bạn cần tính đến chuyển động của con trỏ bên trong luồng. Luồng đánh lừa gọi
use GuzzleHttp\Psr7;

$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
$stream = new Psr7\CachingStream($original);

$stream->read(1024);
echo $stream->tell();
// 1024

$stream->seek(0);
echo $stream->tell();
// 0
0 trên tài nguyên luồng bên dưới khi chúng bị trình thu gom rác của PHP hủy, vì vậy bạn không cần phải tự đóng luồng

người trang trí luồng

Guzzle cung cấp một số trình trang trí luồng mà bạn có thể sử dụng để kiểm soát cách SDK và Guzzle tương tác với tài nguyên phát trực tuyến được cung cấp dưới dạng tham số đầu vào cho lệnh. Các trình trang trí này có thể sửa đổi cách trình xử lý có thể đọc và tìm kiếm trên một luồng nhất định. Sau đây là một phần danh sách;

AppendStream

GuzzleHttp\Psr7\AppendStream

Đọc từ nhiều luồng, cái này nối tiếp cái kia

use GuzzleHttp\Psr7;

$a = Psr7\stream_for('abc, ');
$b = Psr7\stream_for('123.');
$composed = new Psr7\AppendStream([$a, $b]);

$composed->addStream(Psr7\stream_for(' Above all listen to me'));

echo $composed(); // abc, 123. Above all listen to me.

CachingStream

GuzzleHttp\Psr7\CachingStream

Được sử dụng để cho phép tìm kiếm các byte đã đọc trước đó trên các luồng không thể tìm kiếm. Điều này có thể hữu ích khi chuyển phần thân thực thể không thể tìm kiếm không thành công do cần tua lại luồng (ví dụ: do chuyển hướng). Dữ liệu được đọc từ luồng từ xa được lưu vào bộ đệm trong luồng tạm thời PHP để các byte đã đọc trước đó được lưu vào bộ nhớ cache trước, sau đó trên đĩa

use GuzzleHttp\Psr7;

$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
$stream = new Psr7\CachingStream($original);

$stream->read(1024);
echo $stream->tell();
// 1024

$stream->seek(0);
echo $stream->tell();
// 0

Luồng thổi phồng

GuzzleHttp\Psr7\InflateStream

Sử dụng zlib của PHP. thổi phồng bộ lọc để thổi phồng hoặc giảm bớt nội dung gzipped

Trình trang trí luồng này bỏ qua 10 byte đầu tiên của luồng đã cho để xóa tiêu đề gzip, chuyển đổi luồng được cung cấp thành tài nguyên luồng PHP, sau đó nối thêm zlib. thổi phồng bộ lọc. Sau đó, luồng được chuyển đổi trở lại thành tài nguyên luồng Guzzle để được sử dụng làm luồng Guzzle

LườiMởLuồng

GuzzleHttp\Psr7\LazyOpenStream

Đọc hoặc ghi một cách lười biếng vào một tệp chỉ được mở sau khi thao tác I/O diễn ra trên luồng

use GuzzleHttp\Psr7;

$stream = new Psr7\LazyOpenStream('/path/to/file', 'r');
// The file has not yet been opened...

echo $stream->read(10);
// The file is opened and read from only when needed.

Luồng giới hạn

GuzzleHttp\Psr7\LimitStream

Được sử dụng để đọc một tập hợp con hoặc lát cắt của một đối tượng luồng hiện có. Điều này có thể hữu ích để chia nhỏ một tệp lớn thành các phần nhỏ hơn để gửi theo từng phần (e. g. , API Tải lên nhiều phần của Amazon S3)

use GuzzleHttp\Psr7;

$original = Psr7\stream_for(fopen('/tmp/test.txt', 'r+'));
echo $original->getSize();
// >>> 1048576

// Limit the size of the body to 1024 bytes and start reading from byte 2048
$stream = new Psr7\LimitStream($original, 1024, 2048);
echo $stream->getSize();
// >>> 1024
echo $stream->tell();
// >>> 0

NoSeekStream

GuzzleHttp\Psr7\NoSeekStream

Kết thúc luồng và không cho phép tìm kiếm

use GuzzleHttp\Psr7;

$original = Psr7\stream_for('foo');
$noSeek = new Psr7\NoSeekStream($original);

echo $noSeek->read(3);
// foo
var_export($noSeek->isSeekable());
// false
$noSeek->seek(0);
var_export($noSeek->read(3));
// NULL

PumpStream

GuzzleHttp\Psr7\PumpStream

Cung cấp luồng chỉ đọc bơm dữ liệu từ PHP có thể gọi được

Khi gọi khả năng gọi được cung cấp, PumpStream chuyển lượng dữ liệu được yêu cầu đọc sang khả năng gọi được. Có thể gọi được có thể chọn bỏ qua giá trị này và trả về ít hoặc nhiều byte hơn so với yêu cầu. Mọi dữ liệu bổ sung được trả về bởi khả năng gọi được cung cấp sẽ được lưu vào bộ đệm nội bộ cho đến khi cạn kiệt bằng hàm read() của PumpStream. Có thể gọi được cung cấp PHẢI trả về false khi không còn dữ liệu để đọc

Triển khai trình trang trí luồng

Tạo trình trang trí luồng rất dễ dàng nhờ GuzzleHttp\Psr7\StreamDecoratorTrait. Đặc điểm này cung cấp các phương thức triển khai

use GuzzleHttp\Psr7;

$a = Psr7\stream_for('abc, ');
$b = Psr7\stream_for('123.');
$composed = new Psr7\AppendStream([$a, $b]);

$composed->addStream(Psr7\stream_for(' Above all listen to me'));

echo $composed(); // abc, 123. Above all listen to me.
0 bằng cách ủy quyền cho một luồng bên dưới. Chỉ cần
use GuzzleHttp\Psr7;

$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
$stream = new Psr7\CachingStream($original);

$stream->read(1024);
echo $stream->tell();
// 1024

$stream->seek(0);
echo $stream->tell();
// 0
2
use GuzzleHttp\Psr7;

$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
$stream = new Psr7\CachingStream($original);

$stream->read(1024);
echo $stream->tell();
// 1024

$stream->seek(0);
echo $stream->tell();
// 0
3 và thực hiện các phương pháp tùy chỉnh của bạn

Ví dụ: giả sử chúng ta muốn gọi một hàm cụ thể mỗi khi byte cuối cùng được đọc từ một luồng. Điều này có thể được thực hiện bằng cách ghi đè phương thức

use GuzzleHttp\Psr7;

$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
$stream = new Psr7\CachingStream($original);

$stream->read(1024);
echo $stream->tell();
// 1024

$stream->seek(0);
echo $stream->tell();
// 0
4

Làm cách nào để tạo luồng trong PHP?

Bạn tạo ngữ cảnh bằng hàm stream_context_create() . Hầu hết các chức năng tạo luồng sẽ chấp nhận một mảng ngữ cảnh. Việc sử dụng bối cảnh luồng phổ biến nhất trong PHP là xây dựng các tiêu đề HTTP.

Luồng đầu vào trong PHP là gì?

php. // đầu vào là luồng chỉ đọc cho phép bạn đọc dữ liệu thô từ phần thân yêu cầu .

Trình bao bọc php là gì?

Trình bao bọc là mã bổ sung cho luồng biết cách xử lý các giao thức/mã hóa cụ thể . Ví dụ: trình bao bọc http biết cách dịch URL thành HTTP/1. 0 yêu cầu tệp trên máy chủ từ xa.