Luồng tệp PHP

Luồng là tài nguyên được cung cấp bởi PHP mà chúng ta ít chú ý đến. Các luồng có thể được sử dụng như một công cụ rất mạnh mẽ và bằng cách khai thác sức mạnh của các luồng, chúng tôi có thể đưa ứng dụng của mình lên một cấp độ cao hơn. Luồng PHP được định nghĩa như sau (theo PHP Manual)

Luồng được giới thiệu với PHP 4. 3. 0 như một cách khái quát hóa tệp, mạng, nén dữ liệu và các hoạt động khác chia sẻ một bộ chức năng và cách sử dụng chung. Theo định nghĩa đơn giản nhất, luồng là một đối tượng tài nguyên thể hiện hành vi có thể truyền được. Nghĩa là, nó có thể được đọc từ hoặc ghi vào theo kiểu tuyến tính và có thể ____0_______0 tới một vị trí tùy ý trong luồng

Luồng được giới thiệu lần đầu ở phiên bản PHP 4. 3. 0 như một cách để đánh dấu tiêu hóa cho File , Network, Data nén và các tiến trình khác trong đó sử dụng chung một tập hợp các chức năng hoặc có cách sử dụng chung. Một cách định nghĩa đơn giản hơn, Luồng là một nguồn tài nguyên thay đổi biểu tượng đại diện cho cách hành động có thể truyền được. Theo đó Luồng có thể được đọc, được ghi vào theo một phong cách "tuyến tính" và có thể được

0 đến một vị trí bất kỳ trong luồng

Mỗi luồng sẽ có một

2 trong đó tồn tại một số mã bổ sung cần thiết để xử lý các giao thức đặc biệt hoặc thực hiện công việc mã hóa. PHP cung cấp một số trình bao bọc sẵn có và chúng ta có thể dễ dàng tạo và đăng ký các biến thể bao bọc này cho riêng mình. Ngoài ra, chúng ta cũng có thể sửa đổi hoặc cải tiến tiến trình "hành vi" của các trình bao bọc sử dụng
3 và
4

Luồng cơ bản

Một stream được tham chiếu dưới dạng

5
6` sẽ phụ thuộc vào cú pháp của wrapper.

Trình bao bọc mặc định sẽ là

7, điều này có nghĩa là mỗi khi chúng ta truy cập vào hệ thống tệp, chúng ta đều phải sử dụng qua luồng. Ví dụ với việc đọc tệp, ta có thể viết bằng hai cách là
8 hoặc
9, sẽ cho ra cùng một kết quả. Một ví dụ khác, nếu chúng ta có một đoạn mã là
array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
0 thì khi đó chúng ta đang yêu cầu PHP sử dụng trình bao bọc HTTP Stream thay vì trình bao bọc Luồng tệp

Như mình đã nói bên trên, PHP cung cấp một số trình bao bọc sẵn có, giao thức cho các bộ lọc. Để tìm hiểu cụ thể hơn các hàm bao có sẵn với môi trường của bạn, chúng ta có thể sử dụng các hàm sau

array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
1
Luồng tệp PHP
array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
2
Luồng tệp PHP
array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
3
Luồng tệp PHP

Trên đây là cách vận chuyển, trình bao bọc và bộ lọc trên môi trường máy tính của mình, ngoài ra thì nếu cần thiết chúng ta cũng có thể viết thêm luồng cho Amazon S3, MS Excel, Google Storage, Dropbox hoặc thậm chí chí là cả Twitter

php. // Vỏ bánh

Bản thân PHP cũng tự có cho riêng mình một trình bao bọc để có thể truy cập vào các luồng I/O. Một số trình bao bọc cơ bản như. php. //stdin, php. // thiết bị xuất chuẩn và php. //stderr was map to with I/O resource I/O default. PHP cũng có thêm php. //input is a read-only stream can be access direct to data raw of POST request. Điều này khá thuận tiện khi chúng ta đang làm việc với các dịch vụ từ xa mà dữ liệu tải trọng được đặt tại phần thân của một yêu cầu POST

Cùng thử thực hiện kiểm tra thu nhỏ sử dụng curl nhé

array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
4

Kết quả của đoạn mã

array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
5 trả về sẽ là

Array
(
    [a] => b
    [c] => d
)

Lưu ý rằng chúng ta không thể lấy gói dữ liệu đầu tiên được lấy từ $_POST nhưng nếu thay vào đó chúng ta sử dụng

array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
6 thì lại có thể đưa ra kết quả đầy đủ.
array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
7

PHP5. 1 giới thiệu thêm các trình bao bọc. php. // bộ nhớ và php. //temp used to read and write the temporary data. Bản thân tên của các trình bao bọc này cũng cho thấy rằng dữ liệu được lưu trữ tương ứng trong bộ nhớ hoặc trong một bộ tệp tạm thời được quản lý bởi hệ thống. Ngoài ra còn có thêm php. //bộ lọc, một trình bao bọc meta được thiết kế để có thể áp dụng các bộ lọc trong việc mở một luồng với các hàm như

array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
8 hoặc
array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');
9 hoặc
Array
(
    [Host] => localhost
    [Auth] => SecretAuthToken
    [Content-type] => application/x-www-form-urlencoded
    [Content-length] => 11
)
0

Trong ví dụ đầu tiên chúng ta đã sử dụng thêm một bộ lọc để mã hóa dữ liệu ghi vào ổ đĩa. Ở ví dụ tiếp theo chúng ta có các bộ lọc được áp dụng cho việc đọc nội dung của một url từ xa. Hiệu quả của bộ lọc có thể từ rất đơn giản đến trở nên vô cùng mạnh mẽ

Bối cảnh truyền phát

Một bối cảnh là một luồng đặc biệt với một bộ tham số hoặc tùy chọn mà có thể sử dụng để thay đổi, hành động tối ưu của một trình bao bọc. Một trường hợp sử dụng phổ biên ngữ cảnh được sử dụng để thay đổi trình bao bọc HTTP. Điều này giúp chúng ta tránh sử dụng cURL cho các nhiệm vụ mạng đơn giản

array(
    'method'=>"POST",
    'header'=> "Auth: SecretAuthTokenrn" .
        "Content-type: application/x-www-form-urlencodedrn" .
              "Content-length: " . strlen("Hello World"),
    'content' => 'Hello World'
  )
);
$default = stream_context_get_default($opts);
readfile('http://localhost/dev/streams/php_input.php');

Đầu tiên chúng ta sẽ định nghĩa mảng tùy chọn của mình với định dạng $array['wrapper']['option_name']. (mỗi một trình bao bọc sẽ cho một tập hợp các tùy chọn khác nhau). Sau đó chúng ta có thể gọi

Array
(
    [Host] => localhost
    [Auth] => SecretAuthToken
    [Content-type] => application/x-www-form-urlencoded
    [Content-length] => 11
)
1 để trả về ngữ cảnh mặc định và chấp nhận các tùy chọn mảng để thay thế cho các giá trị mặc định. Hàm
Array
(
    [Host] => localhost
    [Auth] => SecretAuthToken
    [Content-type] => application/x-www-form-urlencoded
    [Content-length] => 11
)
2 after that used to get data about

Trong ví dụ này, nội dung được trả về thông qua nội dung của yêu cầu, tập lệnh điều khiển từ xa đó sử dụng php. // đầu vào có thể đọc nó, chúng ta có thể truy cập vào các tiêu đề bằng cách sử dụng hàm apache_request_headers() và thêm

Array
(
    [Host] => localhost
    [Auth] => SecretAuthToken
    [Content-type] => application/x-www-form-urlencoded
    [Content-length] => 11
)

Khi đó chúng ta đã thay đổi ngữ cảnh mặc định. Trong trường hợp bạn muốn sửa đổi bối cảnh nhưng không ảnh hưởng đến bối cảnh mặc định, thì bạn có thể tạo ra một bối cảnh mới dựa trên bối cảnh mặc định mà sử dụng chúng song song với nhau

Kết luận

Qua những mô tả bên trên, có thể bạn đã thấy sức mạnh của PHP Stream, vì vậy nếu bạn muốn tìm hiểu thêm hoặc muốn khai thác sức mạnh của Stream trong ứng dụng của mình thì đừng ngại bắt tay vào làm thử. Như bạn có thể thấy, các luồng chia sẻ với nhau một phần hoặc tất cả các hàm liên quan đến hệ thống tệp, vì vậy cách tốt nhất là hãy tìm hiểu kỹ về hệ thống tệp và cố gắng triển khai một trình bao bọc tùy chỉnh để làm việc với hệ thống tệp nhé.

Luồng PHP là gì?

Giới thiệu luồng PHP . Theo định nghĩa đơn giản nhất, luồng là một đối tượng tài nguyên thể hiện hành vi có thể truyền được. the 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.

Làm cách nào để lấy dữ liệu luồng trong PHP?

Để có quyền truy cập vào luồng đầu vào tiêu chuẩn, bạn có thể sử dụng php. //stdin , chỉ đọc.

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 .

Kích thước bộ đệm của luồng PHP là gì?

Theo thông tin trên, chúng ta có thể dễ dàng thấy rằng kích thước mặc định của bộ đệm PHP trong hầu hết các cấu hình là 4096 byte (4KB) .