2009-10-12 23 views
23

Chỉ muốn chọn bộ não của các chuyên gia về bộ đệm đầu ra php. Có những lúc tôi muốn thực hiện nó vì một lý do này hay lý do khác, nhưng luôn quản lý để sắp xếp lại mã của tôi để giải quyết nó.PHP đệm đầu ra - âm thanh như một ý tưởng tồi, phải không?

Tôi tránh sử dụng vì có vẻ như nó sẽ tốn tiền. Ý tôi là, nếu họ có thể cung cấp cho coder sự linh hoạt tuyệt vời như vậy, tại sao họ không luôn luôn đệm đầu ra? Câu trả lời duy nhất tôi có thể đưa ra là: bởi vì không đệm nó tiết kiệm tài nguyên to lớn, và với thực hành mã hóa tốt, bạn không nên cần nó.

Tôi có tắt đường ở đây không?

Trả lời

19

Từ kinh nghiệm của tôi, không có tác động đáng kể đến hiệu suất. Tôi cũng không thể tìm thấy câu trả lời phù hợp về chủ đề - một số người cho rằng hầu như không có bất kỳ hit nào chống lại hiệu suất, trong khi một số người nói rằng có một hiệu ứng nhỏ nhưng đáng kể. Thậm chí có một nhận xét trên php.net gợi ý rằng việc đệm tăng hiệu suất so với nhiều chức năng đầu ra, không phải là tôi đã xác minh điều đó hoặc bất kỳ điều gì.

Tôi nghĩ rằng câu hỏi có hay không để bộ đệm có nhiều hơn để làm với việc sử dụng dự định của ứng dụng của bạn. Việc đệm có ý nghĩa rất nhiều nếu bạn muốn nén đầu ra trước khi gửi hoặc nếu bạn muốn kiểm soát chính xác thời gian và vị trí đầu ra diễn ra trong mã của bạn. Vì không cần nhiều nỗ lực để thêm bộ đệm, bạn cũng có thể dùng thử nó - bạn nên xóa nó một cách tương đối dễ dàng nếu cần.

+1

Ồ, đó là lần đầu tiên tôi nghe về điều đó ... tiềm năng tăng hiệu suất. Bạn nói đúng, tôi nên chơi với nó, đặc biệt là khi tôi đang trong giai đoạn phát triển. – Aaron

+1

Có một lý do hợp lý tại sao hiệu suất được tăng cường - php không phải là "phá vỡ từ việc xử lý", do đó việc xử lý nhanh hơn nhiều vì nó liên tục - tương tự với việc truyền dữ liệu. Tất nhiên nó có vẻ như nó sẽ sử dụng nhiều bộ nhớ hơn tại một thời điểm, nhưng nó giữ nó trong thời gian ngắn hơn. Có lẽ bạn đang tải một số framwork/thư viện mà phải mất nhiều hơn nữa, do đó, nó không phải là một sự khác biệt đáng kể xem xét "bình thường" mã nguồn số lượng đầu ra-ed ... :-) –

8

Tôi nghĩ ngược lại. Không đệm đầu ra là một ý tưởng tồi trừ khi bạn chạy vào một tình huống mà bạn thực sự cần nó. Ví dụ, một kịch bản sẽ tạo ra một lượng lớn đầu ra.

Trong hầu hết các trường hợp, hãy đốt cháy một loạt thời gian lập trình để tiết kiệm một số lượng bộ nhớ (rẻ) không xác định giống như lãng phí tài nguyên.

+0

Có một ý nghĩ ... sử dụng nó nhưng có cách tắt nó khi đầu ra lớn. Tốt, người đàn ông! – Aaron

+1

Cách dễ nhất để "tắt tính năng" cho tập lệnh có nhiều đầu ra (nghĩ rằng một số báo cáo gửi ra một loạt dữ liệu csv hoặc thứ gì đó) chỉ là ob_end_flush(); ở đầu tập lệnh của bạn. Bạn có thể (cố gắng) buộc đầu ra bên trong vòng lặp của bạn với flush(); – timdev

4

Sử dụng bộ đệm đầu ra Tôi đã có thể tạo hệ thống khuôn mẫu trọng lượng nhẹ một cách nhanh chóng cho một chương trình phụ trợ MVC đã được ủ tại nhà cho dự án PHP cuối cùng của tôi. Tôi thích nó và thấy nó rất hữu ích.

Và liên quan đến tài nguyên: nó không phải là tài nguyên chuyên sâu. Nếu bạn đang lo lắng về ít nó sử dụng, PHP không phải là công cụ thích hợp cho công việc. Tôi yêu PHP nhưng nó không phải là lựa chọn nhẹ nhất. Trên bất kỳ máy chủ hiện đại hợp lý mặc dù, điều đó sẽ không thành vấn đề.

+0

@Dinah, tôi đã ấn tượng rằng PHP siêu nhẹ ... nhưng đó có lẽ là vì tôi đã quen với Coldfusion. Còn gì nhẹ hơn? – Aaron

+1

@Aaron C hoặc ASM. PHP là một ngôn ngữ linh hoạt như vậy mà nó thường là cách chậm hơn so với bất kỳ ngôn ngữ máy tính để bàn khác, như C, C++, Java, C# vv. Tuy nhiên, so với các ngôn ngữ kịch bản khác, nó vẫn có thể khá nhanh. – phihag

4

Nếu bạn đang ở trong tình huống mà nội dung được xuất trước tiêu đề, bạn sẽ cần đưa nội dung vào bộ đệm hoặc trang khác sẽ phát hiện ra nội dung đó được xuất trước tiêu đề. Điều này đã xảy ra với tôi với các thư viện được chia sẻ và không đủ thời gian để đi vào và thực hiện một sửa chữa thích hợp để khởi chạy. Đó là một trong số đó đánh dấu // TODO/FIXME và sau đó quay lại và làm cho nó thích hợp sau này.

Các vấn đề liên quan