2010-01-21 20 views
9

Nếu tôi có một số lượng lớn các chức năng sẽ tốt hơn nếu giữ chúng trong một tệp lớn hoặc tốt hơn là tách chúng thành nhiều tệp có liên quan. Bởi tốt hơn tôi có nghĩa là hiệu quả hơn cho cả hai bảo trì và cho máy chủ xử lý yêu cầu.Hiệu quả để bao gồm các tệp chức năng (bằng PHP)

Ví dụ: ngay bây giờ tôi có tất cả các tệp trong một tệp có tên include.php. Nhưng sẽ khôn ngoan hơn nếu có một tệp bao gồm bao gồm:

<?php 
include('/functions/user.php'); 
include('/functions/admin.php'); 
include('/functions/content.php'); 
include('/functions/nav.php'); 
include('/functions/database.php'); 
include('/functions/other_junk.php'); 
?> 

Trả lời

17

Chắc chắn tách chúng ra, vì mục đích bảo trì. Tôi nghi ngờ hiệu suất sẽ bị ảnh hưởng ở tất cả, nhưng ngay cả khi nó (chỉ là một bit teensy) bạn tốt hơn bằng văn bản duy trì, có thể đọc được mã.

+2

+1 để tuyên truyền tính bảo trì và khả năng đọc trong php. – whiskeysierra

+0

-1, Có tất cả các chức năng trong một tệp không có nghĩa là nó không thể duy trì, không đọc được. Nó phụ thuộc vào ** làm thế nào ** bạn làm điều đó. Thật vậy, nó vẫn còn rất có thể được unmaintainable và không đọc được ngay cả với nhiều bao gồm. – Pacerier

2

Về mặt bảo trì, tốt hơn nên tách các chức năng của bạn thành các nhóm liên quan. (như bạn đã trình bày ở trên, user.php sẽ chỉ là các hàm liên quan đến người dùng).

Bạn chỉ nên có tệp có tất cả những điều đó bao gồm nếu bạn biết rằng bạn sẽ cần tất cả các tệp được bao gồm mỗi lần bạn cần bao gồm bất kỳ tệp nào. Nếu không, nó sẽ đánh bại mục đích có tệp 'nắm bắt tất cả' đó.

2

Trong nhiều kinh nghiệm của tôi bao gồm và/hoặc yêu cầu goping thường arent để đặt bạn quá nhiều trở lại nếu bạn đang nói một vài chục hoặc hơn các tập tin cho thư viện chức năng. Đặc biệt là nếu bạn có thể quản lý để chỉ gọi báo cáo cho một tập tin cụ thể một lần trong suốt vòng đời yêu cầu.

Nơi bắt đầu hiển thị lần truy cập hiệu suất là khi bạn tham gia OOP hoặc kiến ​​trúc kiểu thủ tục/chức năng rất phức tạp, nơi có thể có hàng trăm lớp/tệp khác nhau. Nhưng nói chung tại thời điểm đó bạn sẽ hy vọng thực hiện một số loại giảm thiểu thông qua bộ nhớ đệm/biên dịch.

+0

Thực ra nó sẽ rất chậm nếu bạn không có máy gia tốc. Đĩa đọc vẫn còn đắt tiền. – Pacerier

3

Bạn muốn chắc chắn rằng mình đang sử dụng bộ nhớ cache PHP như XCache hoặc APC. Các tập tin PHP của bạn sau đó tất cả sẽ được trong bộ nhớ và bạn không nên lo lắng về bao gồm của bạn nhấn đĩa ở tất cả.

Tôi chắc chắn sẽ dễ dàng hơn nếu bạn chia nhỏ các chức năng/lớp học có đầu óc thành các tệp của riêng chúng.

+4

XCache và APC, trừ khi được định cấu hình cụ thể khác, sẽ kiểm tra thời gian sửa đổi tệp để xác định liệu họ có nên xử lý phiên bản mới của tệp hay không. Điều này ảnh hưởng đến hiệu suất khá một chút nếu có một số lượng lớn bao gồm. Trên máy chủ sản xuất nơi mã được sửa, bạn thực sự nên tắt tính năng này. Bạn sẽ nhận được một tăng hiệu suất nhỏ tốt đẹp với chi phí phải tự xóa bộ nhớ cache khi bạn tải lên phiên bản mới của mã. – Mike

0

Tôi có danh sách bao gồm trong tệp .config trung tâm.

Đối với tất cả các lớp OOP mặc dù tôi sử dụng tính năng tự động tải -> Tôi biết nó hơi chậm hơn, nhưng nó tiết kiệm phải bao gồm chúng khi tôi tạo một lớp mới. Và chúng chỉ được tải theo yêu cầu.

Ngoài ra, bao gồm nhanh hơn include_once vì nó không phải kiểm tra xem tệp đã được đưa vào chưa.

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