Làm cách nào để tránh lỗi lỗi ra khỏi bộ nhớ?


7

Tôi hiện đang làm việc với Drupal 7 và tôi đã cài đặt các mô-đun sau, tất cả được cập nhật lên phiên bản cuối cùng tương ứng của chúng:

  • Lượt xem - 7.x-3.0-beta3
  • CTools - 7.x-1.0-alpha4
  • Các bảng - 7.x-3.0-alpha3
  • Quy tắc, ACL, Diễn đàn nâng cao, Truy cập diễn đàn, Điểm người dùng, BUEditor

Tôi liên tục nhận được "Lỗi nghiêm trọng của PHP: Hết bộ nhớ." Giới hạn máy chủ của tôi ở mức tối đa cho phép bởi nhà cung cấp của tôi (32 MB). Những lỗi đó xuất hiện chủ yếu khi tương tác với trang mô-đun, nhưng nó cũng xuất hiện cho bất kỳ người dùng nào thử gia hạn mật khẩu hoặc chỉnh sửa các nút.

Vì vậy, bạn có lời khuyên nào về cách giảm mức sử dụng bộ nhớ?

PS: Tôi đã nhận thấy hầu hết các lỗi đó bao gồm các tập tin xem và bổ sung .inc. Nhưng nó cũng liên quan đến các tệp .inc từ các mô-đun và hệ thống cốt lõi ... Tôi có thể sao chép một số ở đó nếu bạn muốn tôi.

Câu trả lời:


6

Thực sự không có nhiều thứ bạn có thể làm trong trường hợp này. Drupal 7 đòi hỏi một chút bộ nhớ và các Chế độ xem, Bảng điều khiển, v.v.

Nếu nâng cấp lên gói lưu trữ nơi bạn có ít nhất 128 MB không phải là một tùy chọn, tôi ít nhất sẽ đảm bảo các mô-đun sau được giữ tắt:

  • Quản lý cập nhật
  • Ghi nhật ký cơ sở dữ liệu
  • Giao diện người dùng hiện trường
  • Giao diện người dùng
  • Bảng chỉnh sửa tại chỗ
  • Bất kỳ mô-đun "UI" nào khác

Phát triển cục bộ và sử dụng kiểm soát phiên bản & Tính năng để cập nhật hộp sản xuất của bạn.


2
Để lưu ý rằng Giao diện người dùng chỉ cần thiết khi chỉnh sửa chế độ xem hiện có hoặc thêm chế độ xem mới; đối với việc sử dụng thông thường, Giao diện người dùng không cần thiết và Chế độ xem sẽ hoạt động bình thường ngay cả khi mô-đun đó bị tắt.
kiamlaluno

1
chính xác, điều tương tự cũng xảy ra với bất kỳ mô-đun "UI" nào khác. Chúng chỉ cần thiết cho sự phát triển. Các trường sẽ hoạt động mà không có UI, Bối cảnh cũng vậy, v.v.
Alex Weber

4
Tuy nhiên, lượt xem (không phải UI) hiện có một dấu chân rất lớn. Gần đây tôi đã cố gắng chống lại dấu chân bộ nhớ của Drupal và nhận thấy các chế độ xem đều tải bộ đệm lược đồ và bộ đệm dữ liệu của riêng nó trên mỗi trang hiển thị chế độ xem. Điều đó có thể dễ dàng có nghĩa là nhiều megabyte trên một trang web với một vài mô-đun được cài đặt (khoảng 4 MB khi cài đặt thử nghiệm của tôi).
Berdir

Tôi phải không đồng ý với khuyến nghị của bạn về việc sử dụng các tính năng - mô-đun đó là một bộ nhớ lớn. Bạn sẽ tốt hơn nhiều khi sử dụng móc cập nhật để triển khai thay đổi cấu hình.
Đêm giao thừa

Thông thường, sau khi thiết lập trang web D7 hiện có về lưu trữ chia sẻ và gặp nhiều vấn đề về bộ nhớ khi sử dụng chế độ xem, tôi thấy việc thay đổi phiên bản PHP từ 7 thành 5.6 rất hữu ích. Không chắc chắn về nguyên nhân, nhưng tôi đã đến mức cho phép 1024M bộ nhớ và nó vẫn đang cạn kiệt trong khi hiển thị 16 mục trong một chế độ xem.
jammypeach

4

Như được liệt kê trong Yêu cầu hệ thống của Drupal , bản thân Drupal Core cần 32M để chạy. Thêm bất kỳ mô-đun đóng góp nào mà không tăng bộ nhớ là một cách chắc chắn để gặp lỗi này.

Nếu tối đa máy chủ của bạn chỉ là 32 triệu, đã đến lúc nhận lưu trữ mới.


Điều tồi tệ là tôi vừa thay đổi nó ... Tôi nghĩ rằng tôi đã bị mắc kẹt trong ít nhất một năm ...... Phải kiểm tra điều này. :(
nyoz

BTW, hoster của tôi là 1 & 1 Pháp. Tôi đã đọc trong một số diễn đàn hỗ trợ wordpress rằng gần đây họ đã nâng cấp giới hạn php của mình lên 90Mb. Tôi sẽ gọi cho họ vào thứ hai ...! ;)
nyoz

2

Như đã đề cập, điểm mấu chốt là bạn thực sự cần 128M. Một điểm lưu ý khác là nếu bạn có bộ hình ảnh hoạt động, điều đó thường xuyên nhắc nhở chúng tôi (ít nhất là trong Drupal 6) rằng ít nhất 96M là bắt buộc trong một số trường hợp nhất định.

32M sẽ không cắt giảm.


0

Tôi nghĩ rằng việc sử dụng mô-đun Views là vấn đề lớn nhất của bạn.

Viết lại tất cả các trang sử dụng chế độ xem với truy vấn tùy chỉnh, xóa mô-đun chế độ xem và trong khi chúng tôi nói về nó cũng xóa Quy tắc (một lần nữa, chuyển tất cả logic sang mã) và việc sử dụng bộ nhớ của bạn sẽ giảm xuống ngay.

Ngoài ra, chỉ cần viết các tệp mẫu và sử dụng các móc tiền xử lý sẽ loại bỏ nhu cầu về việc tiết kiệm nhiều bộ nhớ hơn.

Đây không phải là những bước dễ dàng hoặc nhanh chóng và đòi hỏi kiến ​​thức sâu sắc về Drupal, MySql và PHP tuy nhiên nếu hiệu suất là ưu tiên số một thì đây là giải pháp tốt nhất (và sẽ chạy trên 32M bộ nhớ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.