2009-12-21 24 views
9

Một số khung sử dụng spl_autoload_register() để tải động các lớp (ví dụ: bộ điều khiển và mô hình). Có một vài bài viết về vấn đề tự động tải và mã hóa bộ nhớ đệm. Một bài nói riêng có một phản ứng bởi @cletus mà tham chiếu @Rasmus thực hiện một số tuyên bố đó chứng minh được không lành mạnh đối với những người sử dụng APC như một bộ nhớ cache opcode:PHP5 Frameworks: Tự động tải và Opcode Caching

Có không xuất hiện là bất kỳ cuộc thảo luận nào về bất kỳ lựa chọn thay thế có thể nào để tự động tải không ảnh hưởng đến hiệu suất bộ nhớ cache của opcode.

Có cách nào để thực hiện các lớp tự động tải không được thêm vào bộ nhớ cache mã byte không?

Nếu không, có phương pháp thay thế nào để tải động các lớp sẽ được lưu vào bộ nhớ cache không?

+4

từ những gì tôi nhớ lại ngày của tôi về Mediawiki + APC, các lớp học tự động nạp sẽ được lưu trữ bởi APC. – jldupont

+0

@jldupont - Tôi vừa cập nhật để tham khảo một câu trả lời cụ thể khiến tôi phải viết bài đăng này. –

Trả lời

5

Dường như vẫn còn sự nhầm lẫn về chủ đề này, tuy nhiên trong hầu hết các trường hợp, nó giảm xuống dễ dàng so với hiệu suất.

Một mailing list tốt thread để đọc sẽ là một này vào danh sách gửi thư Zend Khung:

http://n4.nabble.com/ZF-and-Autoloading-td640085i20.html

Bây giờ, mối tương quan là ở đây bởi vì nếu bạn kế thừa từ không-chưa xác định lớp , bạn có thể dựa vào tự động tải để xác định nó (mặc dù bạn cũng có thể dựa vào bao gồm), và thực sự sự hiện diện của cơ sở tự động tải có thể khuyến khích bạn sử dụng thừa kế đó. Nhưng đây không phải là tự động tải mà mang lại rắc rối (xem sau khi Ramus '"nó không chỉ tự động tải" trong blog cho một số ví dụ về những điều phiền hà). Vì vậy, cụm từ đúng sẽ là "những người có xu hướng dựa vào tự động tải có xu hướng cũng để sử dụng mã mà bất chấp thời gian biên dịch ràng buộc". Dĩ nhiên, không thể thấy là lỗi tự động tải xuống và chỉ cần tránh tự động tải sẽ không giúp được một bit - bạn cũng phải viết lại mã của mình để có thể xảy ra ràng buộc biên dịch thời gian . Và nó không có gì để làm với việc sử dụng các ví dụ của autoload với "mới".

Đối với suy thoái khỏi những tác động mô tả ở trên - tức là, sự vắng mặt của thời gian biên dịch ràng buộc - mã thực sự trở nên chậm hơn một chút và như vậy mã có thể dẫn đầu trong một số trường hợp khó hiểu đối với một số khó khăn để cache opcode (không phải trong các trường hợp tự động tải - nhưng trong trường hợp các lớp được định nghĩa là bên trong điều kiện, hoặc, Chúa cấm, định nghĩa khác nhau được tạo ra tùy theo điều kiện) - nhưng không có gì liên quan đến việc tự sử dụng tự động tải. Số tiền chậm lại, tuy nhiên, dường như được experrated bởi người - nó không là gì (và tôi lặp lại để được rõ ràng - NOTHING) so sánh với lợi ích hiệu suất được cung cấp bởi bộ nhớ cache opcode do sự vắng mặt của hoạt động đĩa và giai đoạn biên dịch. Bạn có thể có thể soạn một chuẩn mực nhân tạo sẽ cho thấy sự chậm trễ đáng kể , nhưng tôi không tin rằng bất kỳ ứng dụng thực nào thậm chí sẽ nhận thấy.

nguồn:http://n4.nabble.com/ZF-and-Autoloading-td640085i20.html#a640092

+2

[liên kết được cập nhật] (http://osdir.com/ml/php.zend.framework.general/2007-01/msg00132.html) để báo giá đầy đủ. – Xeoncross