Tắt bộ đệm đầu ra PHP
Bạn có thể đã nghe nói về bộ đệm đầu ra trong khi bạn viết mã bằng PHP. Tôi sẽ cho bạn biết nó là gì và cách sử dụng nó một cách đơn giản Show
Ý nghĩa của "Bộ đệm đầu ra""Bộ nhớ đệm" trong điện toán có nghĩa là
Đây chính xác là những gì PHP làm. Nhưng, cơ chế mặc định không phải thế này. Nó được tắt theo mặc định tôi. e
Tắt đệm đầu ra (Mặc định)Khi người dùng yêu cầu một trang PHP từ máy chủ của bạn, PHP sẽ xử lý trang đó và ngay lập tức, HTML sẽ được gửi đến trình duyệt (người dùng) Điều này có nghĩa là trình duyệt nhận được HTML theo từng đoạn trong khi kết nối và kết nối sẽ không đóng cho đến khi quá trình xử lý kết thúc Đây là cài đặt mặc định trong PHP i. bộ đệm đầu ra e đã tắt Bật đệm đầu raNhư ý nghĩa của từ này, HTML đã xử lý được lưu trữ trong một biến cho đến khi quá trình xử lý kết thúc và khi quá trình xử lý kết thúc, nội dung của biến đó sẽ được gửi Vì vậy, thay vì khối dữ liệu, toàn bộ dữ liệu được gửi ngay lập tức. Đây là những lợi ích nếu bạn bật bộ đệm đầu ra
Chuyển đổi bộ đệm đầu raBạn có thể chọn bật/tắt bộ đệm đầu ra vĩnh viễn bằng cách chỉnh sửa "php. tập tin ini". Tìm khóa "output_buffering" và đặt giá trị Đầu ra của cấu hình của bạn. php trong github. com/nextcloud/máy chủsửa chữa. php thiết lập output_buffering kiểm tra các giá trị được phép
đã mở 06. 26:00 - 31 tháng 10, 20 UTC preya +2 -2 Tôi nghĩ rằng cách tiếp cận hiện tại là chính xác và một cái gì đó trên thiết lập của bạn bị hỏng. Bước đầu tiên để xác thực đó là tạo một tệp trong thư mục của nextcloud Trong vài ngày qua, tôi đã đi sâu vào thử nghiệm tính năng BigPipe mới thử nghiệm của Drupal 8, cho phép truyền phát và tải các yêu cầu trang Drupal dành cho người dùng đã xác thực theo từng giai đoạn—các phần tử được lưu trong bộ nhớ cache (thường là phần lớn của trang) được tải gần hết Đây là bản trình diễn rất nhanh về một trường hợp cực đoan, trong đó một phần nội dung cụ thể mất năm giây để tải; Bản demo Drupal BigPipe - nhấp để chơi lại BigPipe tận dụng lợi thế của việc truyền trực tuyến các phản hồi PHP (sử dụng Và bởi vì nghiên cứu của tôi đã tìm ra một loạt các giả định đúng một nửa, hầu như chưa được kiểm chứng về bộ đệm đầu ra với các yêu cầu PHP, nên tôi nghĩ rằng mình sẽ đặt mọi thứ thẳng thắn trong một bài đăng blog toàn diện Kiểm tra bộ đệm đầu raTôi đã thấy một số lượng lớn các tập lệnh ví dụ được sử dụng để kiểm tra output_buffering trên Stack Overflow và các nơi khác, và nhiều tập lệnh cho rằng bộ đệm đầu ra bị vô hiệu hóa hoàn toàn. Thay vì làm điều đó, tôi quyết định tạo một tập lệnh mạnh mẽ hơn một chút cho mục đích thử nghiệm của mình và cũng để ghi lại tất cả các bit khác nhau cho đầy đủ
Nếu bạn đặt tệp này vào một tài liệu gốc có thể truy cập web, sau đó tải tập lệnh trong thiết bị đầu cuối của bạn bằng cách sử dụng cli của PHP, bạn sẽ thấy đầu ra như thế nào (nhấp để phát lại) Truyền phát phản hồi PHP qua CLI của PHP - nhấp để phát lại Và nếu bạn xem nó trong trình duyệt? . Thay vào đó, bạn sẽ không thấy gì cho đến khi tải toàn bộ trang (bấm để phát lại) Phản hồi PHP không phát trực tuyến qua máy chủ web trong trình duyệt - nhấp để phát lại Tuy nhiên, điều đó cũng tốt—chúng ta hiện có một đường cơ sở. Chúng tôi biết rằng tập lệnh hoạt động trên PHP CLI, nhưng máy chủ web của bạn hoặc PHP không truyền trực tiếp phản hồi đến máy khách. Nếu bạn thay đổi Truyền phát phản hồi PHP qua máy chủ web trong trình duyệt - nhấp để phát lại Phần còn lại của bài đăng này sẽ thực hiện các bước cần thiết để đảm bảo phản hồi được truyền trực tuyến qua toàn bộ ngăn xếp của bạn PHP và output_bufferingMột số hướng dẫn nói rằng bạn phải đặt 0 trong php của mình. ini để truyền phát phản hồi PHP. Trong một số trường hợp, điều này hữu ích, nhưng thông thường, nếu bạn đang gọi flush() trong mã PHP của mình, PHP sẽ xóa bộ đệm đầu ra ngay sau khi bộ đệm được lấp đầy (giá trị mặc định là 2, có nghĩa là PHP sẽ xóa bộ đệm của nó trong 4096 Đối với nhiều ứng dụng, bộ đệm 4096 byte mang lại sự đánh đổi tốt để có hiệu suất vận chuyển tốt hơn so với. phản hồi sinh động hơn, nhưng bạn có thể giảm giá trị nếu bạn cần gửi lại nhiều phản hồi nhỏ hơn (e. g. các phản hồi JSON nhỏ như 3)Tuy nhiên, một cài đặt mà bạn chắc chắn cần phải tắt là 4. Đặt nó thành 5 trong php. ini và khởi động lại PHP-FPM để đảm bảo tính năng nén gzip đã bị tắtCó những trường hợp cạnh mà điều trên không hoàn toàn đúng. nhưng trong hầu hết các tình huống trong thế giới thực, bạn sẽ không cần phải tắt cấu hình NginxTôi khuyên bạn nên sử dụng Nginx với PHP-FPM để có cấu hình hiệu quả và linh hoạt nhất, nhưng vẫn chạy cả Apache và Nginx trong sản xuất vì nhiều lý do. Nginx có một lợi thế nhỏ so với Apache đối với việc sử dụng PHP ở chỗ nó không có cách tiếp cận Tất cả những gì bạn phải làm để làm cho phản hồi phát trực tuyến hoạt động với Nginx là đặt tiêu đề
Bạn cũng có thể vô hiệu hóa gzip (_______76) và bộ đệm ( cấu hình apacheVì có nhiều cách khác nhau để tích hợp PHP với Apache, nên tốt nhất bạn nên thảo luận về cách hoạt động của luồng với từng kỹ thuật ' . "\r\n";// For 3 seconds, repeat the string.for ($i = 0; $i < 3; $i++) { $string = str_repeat('.', $string_length); echo $string . ' |