Như chúng ta biết có nhiều thao tác trong lập trình chứa luồng dữ liệu. Trong luồng này, chúng ta có thể cần đọc và ghi dữ liệu từ đối tượng hoặc vào đối tượng tương ứng. Các luồng tổng quát hóa mạng, nén dữ liệu, tệp và hoạt động. Nghĩa là, các luồng cung cấp một nền tảng tập trung nơi dữ liệu có thể truyền theo phương thức tuyến tính Show Trên trang này, bạn sẽ tìm thấy các hàm truyền phát và thông tin hữu ích liên quan đến chúng. Đối với các chức năng truyền phát này, không cần cài đặt vì nó đi kèm với ngôn ngữ lõi PHP Ví dụ, trong một chuyến đi gần đây nhất của tôi, tôi đã phải đợi vài giờ ở điểm đến chỉ để nhận lại hành lý của mình Từng phút từng phút bên chiếc băng chuyền rỗng không với hy vọng chiếc vali tiếp theo bị chiếc máy nhổ ra sẽ là của tôi Điều đó làm tôi nhớ đến một tính năng hoạt động rất tốt trong PHP Dòng suối Nếu bạn đã từng làm việc với các tệp và tệp lưu trữ bằng các tập lệnh PHP của mình, bạn đã sử dụng các luồng. Chúng không phổ biến nhưng không quá phức tạp Hôm nay bạn ở đây để làm quen với họ. bộ truyệnĐây là loạt bài thực hành tốt về PHP, Trong loạt bài này, chúng ta sẽ khám phá những phương pháp hay nhất mà nhà phát triển web phải quan tâm khi tạo hoặc quản lý mã PHP Nếu bạn bỏ lỡ các tập trước, hãy theo các liên kết bên dưới Dọn dẹp, xác thực và thoát Luồng là gìLuồng được phát hành lần đầu tiên trong PHP 4. 3 Nhưng, có thể do thị trường ngách của họ, hoặc đơn giản là do thiếu nội dung trực tuyến, họ hiếm khi được biết đến Trong PHP 7, hướng dẫn nghiên cứu chứng chỉ Zend Andrew Beak mô tả chúng như một “băng chuyền vận chuyển mọi thứ đến với bạn từng thứ một” Tin vui là khi sử dụng PHP, bạn không cần đợi hàng đến mà chỉ cần đi và lấy chúng Vì vậy, các luồng là gì? Luồng là sự truyền dữ liệu giữa các địa điểm Địa điểm có thể là tệp, tệp lưu trữ ZIP, kết nối thậm chí là quy trình thông qua dòng lệnh Các luồng PHP có các chức năng giúp nhà phát triển quản lý các tài nguyên khác nhau, Tôi chắc rằng bạn đã thấy các chức năng fopen(), fwrite(), fgets() hoặc file_get_contents(), các luồng cung cấp triển khai hoạt động trong nền của các chức năng này các góiTôi chắc rằng bạn hiểu sự khác biệt giữa mở tệp hoặc mở trang web, cả hai đều có nội dung nhưng chúng là hai loại dữ liệu có thể truyền trực tuyến hoàn toàn khác nhau, do đó chúng yêu cầu các giao thức khác nhau Chẳng hạn, chúng tôi có thể mở một trang web bằng cách kết nối với các máy chủ web từ xa bằng HTTP, HTTPS hoặc SSL hoặc đọc tệp lưu trữ ZIP hoặc TAR Các giao thức này được gọi là trình bao bọc luồng. Họ cung cấp một giao diện duy nhất gói gọn tất cả những khác biệt này Mọi luồng được hình thành từ lược đồ và mục tiêu, đây là định dạng. Nhìn quen không? Nếu không chỉ cần tìm kiếm trên thanh địa chỉ của trình duyệt của bạn PHP bao gồm một danh sách các trình bao bọc được tích hợp sẵn trong ngôn ngữ
Trong trường hợp của chúng tôi, php. // có thể truy cập php. //stdin, php. // thiết bị xuất chuẩn, php. // stderr, php. // đầu vào, php. //đầu ra, php. // fd, php. // bộ nhớ, php. // tạm thời và php. //lọc Điều đó thật tuyệt cho đến nay nhưng bạn có thể tự hỏi công việc thực sự của những luồng này là gì Hãy làm một ví dụ Làm cách nào để bạn đọc phần thân của API REST nơi người dùng cập nhật một số chi tiết ở đâu đó trên web? Đó là một yêu cầu PUT và không có $_PUT[biến’] trong PHP; Câu trả lời là thông qua một dòng
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Trong một ví dụ khác, chúng ta có thể sử dụng trình bao bọc tệp và đọc tệp
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Nếu đoạn mã trên trông quá lạ, bạn có thể muốn dừng lại một chút và chuyển qua bài viết cơ bản về PHP Một niềm tin sai lầm phổ biến là các hàm PHP như fopen(), fgets(), fclose() chỉ dành cho hệ thống tệp, Các chức năng này hoạt động hoàn toàn tốt với tất cả các hàm bao hỗ trợ chúng Chúng tôi có thể sử dụng fopen() trên các tệp, kho lưu trữ ZIP và Dropbox (với trình bao bọc Dropbox) và Amazon S3 (với trình bao bọc riêng). Tạo trình bao bọc tùy chỉnh của bạnNếu tập lệnh của bạn cần các yêu cầu đặc biệt, PHP cho phép tự tạo trình bao bọc tùy chỉnh Trong đoạn mã bên dưới, chúng tôi sẽ tạo trình bao bọc luồng gọi hàm gọi lại để đọc
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bạn có thể tìm thấy một vài ví dụ khác được giải thích rất rõ ràng trong bài đăng của Matt Allan, một nhà phát triển full-stack có trụ sở tại Asheville, NC Bộ lọc luồngTheo nhiều nhà phát triển thường xuyên sử dụng luồng, sức mạnh thực sự của tính năng PHP này ẩn sau các bộ lọc Bộ lọc luồng cho phép lọc và chuyển đổi dữ liệu hiện đang chuyển tiếp Hãy tưởng tượng bạn có thể chuyển đổi và xuất tất cả các chuỗi trong một tệp thành chữ hoa, trong khi bạn đang đọc tệp Có 2 cách để sử dụng bộ lọc luồng
stream_filter_append()Hãy xem một ví dụ và tôi sẽ nhận xét nó sau
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Trong dòng đầu tiên, chúng tôi mở tập tin. txt được cho là chứa chuỗi ở dạng chữ thường mà chúng tôi muốn chuyển thành chữ hoa Sau đó, chúng tôi đính kèm (nối) phần xử lý của tệp vào chuỗi bộ lọc luồng. cái nắp đậy Bây giờ PHP biết rằng khi chúng ta lặp qua ngăn chặn, các ký tự cần được hiển thị dưới dạng chữ hoa Cũng giống như ma thuật php. //lọcĐôi khi bạn sẽ cần sử dụng các hàm chẳng hạn như file() hoặc fpassthru() không cho bạn cơ hội đính kèm các bộ lọc sau khi các hàm đã được gọi Điều đó có nghĩa là bạn không thể thêm bộ lọc luồng Trong trường hợp này, bạn sử dụng php. // lọc và sử dụng ngay khi bạn mở tệp Đoạn trích đang theo dõi
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Một lần nữa chúng tôi đính kèm chuỗi bộ lọc. topper để văn bản. txt khi đọc nhưng lần này, chúng tôi đã thực hiện nó trên lệnh mở; Hãy nhận biết định dạng chúng tôi đang sử dụng ở đây. lọc/đọc= _/tài nguyên=__. //_ Tạo bộ lọc luồng tùy chỉnhBộ lọc luồng là một công cụ mạnh mẽ, tuy nhiên, bộ lọc tích hợp do PHP cung cấp khá hạn chế, để khắc phục hạn chế này, PHP cho phép chúng tôi tạo bộ lọc luồng tùy chỉnh, Trên thực tế, bộ lọc tùy chỉnh là lý do chính khiến chúng tôi sử dụng bộ lọc Bộ lọc luồng tùy chỉnh chỉ là các lớp mở rộng hành vi của php_user_filter() Đó là tất cả Lớp này phải có 3 phương thức được triển khai Phương thức đầu tiên và là phương thức chúng ta sẽ xem ngay bên dưới là bộ lọc (), sau đó chúng ta có onCreate và onClose Trước khi đi sâu vào và tạo một luồng để chúng tôi làm rõ Các luồng PHP chia dữ liệu thành các phần của mỗi byte, các phần đó thường được gọi là nhóm Mỗi bộ lọc luồng nhận và quản lý một hoặc nhiều nhóm này tại một thời điểm Hãy cùng nhau tạo bộ lọc luồng tùy chỉnh Quy trình cần 3 bước
Tạo bộ lọcTrong các ví dụ này, chúng tôi sẽ tạo một bộ lọc chỉnh sửa các từ tục tĩu hoặc spam từ các tệp văn bản Như đã nói trước đây, chúng ta cần tạo một lớp cần triển khai php_user_filter hơn là triển khai phương thức filter()
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bây giờ bộ lọc đã sẵn sàng, chúng ta cần đăng ký nó, khá đơn giản Chúng ta chỉ cần sử dụng hàm stream_filter_register() và chuyển tên bộ lọc xác định bộ lọc mới của chúng ta và tên của lớp.
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Đây là trang từ hướng dẫn sử dụng PHP chính thức Chúng tôi đã sẵn sàng sử dụng bộ lọc của mình như chúng tôi đã làm trong các ví dụ trên
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Vậy là xong, chúng ta đã an toàn và sẽ không còn lời lẽ bậy bạ nào nữa Bối cảnh truyền phátPhần cuối cùng về chủ đề này là về ngữ cảnh, Xem bối cảnh luồng giống như một trình bao bọc cho một tập hợp các tùy chọn có thể sửa đổi hành vi của luồng Để tạo ngữ cảnh luồng, bạn cần sử dụng hàm stream_context_create() Phải mất hai tham số, cả hai đều là mảng kết hợp tùy chọn Hãy sử dụng bối cảnh luồng cho một thứ gì đó lạ như gửi yêu cầu HTTP POST bằng file_get_contents() ________số 8 Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bối cảnh luồng là một mảng kết hợp trong đó khóa trên cùng là tên trình bao bọc luồng Đi đến hướng dẫn để biết thêm thông tin về bối cảnh luồng Nếu bạn khám phá ra điều gì đó mới, việc tìm hiểu thêm sẽ dễ dàng như việc chạm vào hình ảnh bên dưới Sự kết luậnĐôi khi việc đi du lịch có thể gây căng thẳng và bạn có thể cần phải đi làm để thư giãn một chút Bây giờ nếu bạn cần sử dụng các tệp trong tập lệnh của mình hoặc quản lý kho lưu trữ mà bạn biết, Các luồng PHP giúp bạn trong việc đó Không có nhiều trường hợp bạn có thể sử dụng chúng và trên thực tế, khả năng sử dụng của chúng khá ẩn đối với hầu hết các nhà phát triển web Nhưng chúng thực sự dễ sử dụng và theo tôi, nội dung này có thể giúp bạn khám phá viên ngọc nhỏ này của ngôn ngữ PHP Bối cảnh luồng php là gì?Ngữ cảnh luồng ¶
. Bối cảnh được tạo bằng cách sử dụng stream_context_create() và có thể được chuyển đến hầu hết các hàm tạo luồng liên quan đến hệ thống tệp (i. e. fopen(), file(), file_get_contents(), v.v. ). a set of parameters and wrapper specific options which modify or enhance the behavior of a stream. Contexts are created using stream_context_create() and can be passed to most filesystem related stream creation functions (i.e. fopen(), file(), file_get_contents(), etc...).
Trình bao bọc luồng php là gì?Lớp streamWrapper ¶
. ). Ghi chú. Đây KHÔNG phải là một lớp thực, chỉ là một nguyên mẫu về cách một lớp xác định giao thức của chính nó. Allows you to implement your own protocol handlers and streams for use with all the other filesystem functions (such as fopen(), fread() etc.). Note: This is NOT a real class, only a prototype of how a class defining its own protocol should be.
Đầu vào php có nghĩa 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 . php. // đầu vào không khả dụng với enctype="multipart/form-data".
thiết bị xuất chuẩn trong php là gì?php. //đầu ra là đầu ra của máy khách, thiết bị xuất chuẩn là đầu ra tiêu chuẩn của máy chủ PHP . |