WordPress truy xuất dữ liệu meta cho tất cả các loại bài đăng tùy chỉnh trong chế độ xem danh sách


9

Tôi đang gặp sự cố trong WordPress khi PHP sắp chết. Tôi đã tăng bộ nhớ, nhưng quá trình PHP nhảy lên mức sử dụng CPU 100% sau đó chết và Apache gây ra lỗi 500.

Tôi đã cố gắng để Apache ghi nhật ký một cái gì đó hoặc PHP / MySQL để ghi lại một lỗi nhưng không có gì được ghi lại sau đó là một lỗi chung 500.

Vấn đề 500 nằm trên trang danh sách, vd:

/wp-admin/edit.php?post_type=artist

Chúng tôi hiện có hơn 1200 mục nghệ sĩ trong WordPress, nếu tôi thêm một loại ngày như thế này:

/wp-admin/edit.php?post_type=artist&orderby=date

Sau đó, danh sách tải lên tốt, thậm chí nhanh chóng! Tôi đã ngồi và xem nhật ký truy vấn MySQL và có vẻ như WordPress đang tải dữ liệu meta cho mỗi bài đăng (tất cả 1200 bài) để tạo danh sách 10 hoặc hơn. Đối với chỉ một trong các truy vấn, đó là trả về 92000 hàng. Tôi đang sử dụng Trường tùy chỉnh nâng cao và một mẫu có khung riêng, vì vậy mỗi bài đăng có một khối dữ liệu meta được đính kèm. Tôi nghĩ rằng đây là quá nhiều dữ liệu để PHP xử lý và tôi đang tăng trần ở đây. 1200 bài viết có khả năng tăng gấp đôi dễ dàng trong năm tới.

Làm cách nào tôi có thể buộc tải trang ban đầu để nối thêm sắp xếp ngày hoặc khắc phục sự cố với việc tải lên tất cả dữ liệu meta đó?


Bạn đã thử vô hiệu hóa ACF và bất kỳ plugin nào khác chưa? Tôi nghĩ rằng tôi đã từng có một vấn đề tương tự và tôi nghĩ rằng thủ phạm ở đây không phải là chính WP mà là với ACF. ví dụ: ACF thêm dữ liệu meta vào các phiên bản và sau đó cũng tải tất cả. Vui lòng đảm bảo nguồn gốc của vấn đề này là gì vì nó sẽ giúp những người khác giúp bạn.
kraftner

Xin chào @kraftner ive đã vô hiệu hóa ACF và nó không có sự khác biệt nào.
Paul Cullen

Bạn đang sử dụng bao nhiêu bộ nhớ trên wp-config (WP_MAX_MEMORY_LIMIT)? Giá trị PHP.INI của bạn cho memory_limit là bao nhiêu? Hãy thử nâng chúng lên mức tối đa. Ngoài ra, tôi sẽ xem tập tin cấu hình mysql của bạn.
Emanuel Rocha Costa

Ive đã nâng PHP và WP_MAX_MEMORY_LIMIT lên 512 tạm thời để không có hiệu lực. Tập tin cấu hình mysql của tôi là: default-storage-engine=MyISAM innodb_file_per_table=1 max_allowed_packet=268435456 open_files_limit=10000 query_cache_size=64M log_slow_queries = 1 log-slow-queries=/var/log/mysql.slow.log log-error=/var/log/mysqld.log general_log_file = /var/log/mysql_general.log
Paul Cullen

1
loại bài đăng "nghệ sĩ" tùy chỉnh phân cấp (như các trang)? .. nếu vậy đây có thể là thủ phạm vì tất cả các bài đăng sẽ được truy vấn trong bảng điều khiển quản trị viên. Nếu ứng dụng của bạn cho phép bạn có thể thử thay đổi phân cấp thành sai cho CPT "nghệ sĩ" và xem liệu điều đó có làm giảm bớt các vấn đề về bộ nhớ hay không
locomo

Câu trả lời:


1

Hãy thử thay đổi thứ bậc: sai trong định nghĩa CPT của bạn (nếu ứng dụng của bạn cho phép).

Khi CPT được đặt thành phân cấp: đúng, tất cả các bài đăng sẽ được truy vấn trong bảng điều khiển quản trị viên có thể gây ra sự cố bộ nhớ.


0

Vấn đề là CPT đã được đặt thành phân cấp, chuyển đổi nó thành phân cấp: false trong hàm.php đã giải quyết vấn đề.


1
Hãy chấp nhận câu trả lời của riêng bạn, vì vậy câu hỏi này có thể được đóng lại.
cjbj
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.