2008-10-24 23 views
14

Tôi đang xây dựng trang web truy vấn cơ sở dữ liệu MySQL và (hiện tại) tạo danh sách chỉ có văn bản về các phát hiện. Các truy vấn để hoàn thành một hồ sơ duy nhất tương tự như:Việc sử dụng bộ nhớ được chấp nhận cho một trang PHP là gì?

  • phim (tiêu đề, mô tả, vv)
    • diễn viên trong bộ phim (tên, giới tính)
    • phim liên quan

Hết sức tò mò tôi đã sử dụng memory_get_peak_usage()memory_get_usage():

 
start 110,440 bytes 
peak 656,056 bytes 
end 637,976 bytes 
time 0.008 seconds 

Ở trên không có hồ sơ nào được tìm thấy!

Với 40 bản ghi tôi đạt xấp xỉ 2MB, mặc dù thời gian vẫn giữ nguyên.

Tôi biết rằng tối ưu hóa sớm là điều ác và tất cả, nhưng tôi phải hỏi:

Tôi có cần phải làm lại một số không? Việc sử dụng bộ nhớ này có bình thường không? Điều gì được coi là quá mức?

Trả lời

12

Cuối cùng, nó thích hợp hơn để tối ưu hóa khi thuận tiện, nhưng 2MB sử dụng bộ nhớ có vẻ ổn. PHP4 có cấu hình mặc định là 8mb và PHP5 16mb. Rất nhiều bản dựng PHP được đóng gói sẵn sẽ có các cấu hình khác nhau, tất nhiên, nhưng nói chung, nếu bạn có thể giữ ứng dụng của mình dưới 8mb, bạn có thể chắc chắn rằng nó sẽ có tính di động cao trong vấn đề đó.

8

Rõ ràng tất cả phụ thuộc vào độ phức tạp của ứng dụng bạn đang xây dựng. Trung bình, các trang trong ứng dụng của chúng tôi mất đến 20 MB (tối thiểu) bộ nhớ. Đó là bởi vì có rất nhiều đối tượng trong phiên, và rất nhiều quá trình khởi tạo xảy ra trước khi kịch bản thậm chí có thể nói xin chào thế giới (xác thực, quản lý quyền, thông báo, ...)

Có rất nhiều thứ trong không gian bộ nhớ, bao gồm các định nghĩa lớp, hình cầu, định nghĩa chức năng, vv Giảm số lượng các lớp được nạp (bằng cách sử dụng tự động bao gồm) là một cách hay để giữ tập lệnh của bạn chỉ với số lượng các định nghĩa lớp cần thiết.

Tôi không biết liệu tải lên tiện ích có thay đổi mức sử dụng bộ nhớ hay không - đó là điều gì đó cần kiểm tra, vì theo mặc định, chúng tôi có thể không cần tất cả các tiện ích mở rộng được tải mặc định?

0

Miễn là bạn có kế hoạch một cơ chế lưu bộ nhớ đệm tốt (bộ nhớ cache opcode, bộ nhớ cache đối tượng, v.v.), việc sử dụng bộ nhớ sẽ ít liên quan hơn. Bạn vẫn còn cách dưới mức sử dụng bộ nhớ khung phổ biến php.

3

Cá nhân tôi đặt giới hạn là 8 MB. Nếu tôi vượt quá mức đó, tôi sẽ cố gắng cải thiện đơn đăng ký của mình. Lý do là vì một số máy chủ chia sẻ và cấu hình PHP 4 có giới hạn mặc định là 8 MB cho mỗi quá trình.

2

PHP không giải phóng bộ nhớ trong khi thực thi tập lệnh, vì vậy giới hạn bộ nhớ của bạn cần phải cao bằng bộ nhớ một bộ nhớ nhất sẽ tiêu thụ. Nếu nhiều nhất một kịch bản sẽ bao giờ tiêu thụ là 2MB sau đó đặt nó là 2MB nhưng nếu bạn cần 780MB sau đó đặt nó vào đó.

Chúng tôi có hệ thống sản xuất lớn với giới hạn bộ nhớ trên 2GB. Nhưng điều này rõ ràng là rất được điều chỉnh cho chúng tôi và cho kịch bản của chúng tôi, tôi sẽ không bao giờ ủng hộ nó cho môi trường lưu trữ được chia sẻ.

-2

PHP đã biết giới hạn tài nguyên về việc bạn đang sử dụng phiên bản nào. Phiên bản hiện tại có thể xử lý 128MB, PHP 5.2.0 = 16MB và tất cả các phiên bản trước 8MB.

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