WordPress ดึงข้อมูล meta สำหรับประเภทโพสต์ที่กำหนดเองทั้งหมดในมุมมองรายการ


9

ฉันมีปัญหาใน WordPress ที่ PHP กำลังจะตาย ฉันได้เพิ่มหน่วยความจำ แต่กระบวนการ PHP เพิ่มขึ้นถึงการใช้งาน CPU 100% จากนั้นจะตายและ Apache จะโยนข้อผิดพลาด 500 ข้อ

ฉันพยายามที่จะให้ Apache เข้าสู่ระบบบางอย่างหรือ PHP / MySQL เพื่อบันทึกข้อผิดพลาด แต่ไม่มีอะไรถูกบันทึกไว้จากนั้นข้อผิดพลาดทั่วไป 500

ปัญหา 500 อยู่ในหน้ารายการเช่น:

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

ขณะนี้เรามีรายการศิลปินมากกว่า 1200 รายการใน WordPress ถ้าฉันต่อท้ายการเรียงลำดับเช่นนี้:

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

จากนั้นรายการจะโหลดขึ้นอย่างรวดเร็วแม้กระทั่ง! ฉันนั่งและดูบันทึกการสืบค้น MySQL แล้วและปรากฏว่า WordPress กำลังโหลดข้อมูลเมตาสำหรับทุกโพสต์เดียว (ทั้งหมด 1200 รายการ) เพื่อสร้างรายการ 10 หรือมากกว่านั้น สำหรับหนึ่งในแบบสอบถามที่ส่งคืนแถวที่ 92,000 ฉันกำลังใช้ฟิลด์กำหนดเองขั้นสูงและแม่แบบที่มีกรอบงานของตนเองดังนั้นโพสต์แต่ละรายการจะมีข้อมูลเมตาที่แนบมาอย่างดี ฉันคิดว่านี่เป็นข้อมูลที่มากเกินไปสำหรับ PHP ที่จะประมวลผลและฉันกำลังตีเพดานที่นี่ โพสต์ 1200 มีแนวโน้มที่จะเป็นสองเท่าได้ง่ายในปีหน้า

ฉันจะบังคับให้โหลดหน้าเริ่มต้นต่อท้ายเรียงลำดับวันที่หรือแก้ไขปัญหาด้วยการโหลดข้อมูลเมตาทั้งหมดได้อย่างไร


คุณได้ลองปิดการใช้งาน ACF และปลั๊กอินอื่น ๆ หรือไม่? ฉันคิดว่าฉันเคยมีปัญหาที่คล้ายกันและฉันคิดว่าผู้ร้ายที่นี่ไม่ใช่ WP เอง แต่ใช้ ACF เช่น ACF เพิ่มข้อมูลเมตาลงในการแก้ไขแล้วโหลดทั้งหมดด้วย โปรดตรวจสอบให้แน่ใจว่าอะไรคือแหล่งที่มาของปัญหานี้เพราะจะช่วยให้ผู้อื่นช่วยเหลือคุณได้
kraftner

สวัสดี @kraftner ive ปิดใช้งาน ACF และไม่ได้สร้างความแตกต่างใด ๆ
Paul Cullen

คุณใช้หน่วยความจำเท่าใดใน wp-config (WP_MAX_MEMORY_LIMIT) ค่า PHP.INI ของคุณสำหรับ memory_limit คืออะไร ลองเพิ่มพวกเขาให้สูงสุด นอกจากนี้ฉันจะดูไฟล์กำหนดค่า mysql ของคุณ
Emanuel Rocha Costa

ฉันยก PHP และ WP_MAX_MEMORY_LIMIT ทั้งสองเป็น 512 ชั่วคราวเพื่อไม่มีผลกระทบ ไฟล์กำหนดค่า mysql ของฉันคือ: 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
โพสต์ที่กำหนดเอง "ศิลปิน" เป็นลำดับขั้น (เช่นหน้า)? .. ถ้าเป็นเช่นนั้นอาจเป็นผู้ร้ายเนื่องจากการโพสต์ทั้งหมดจะถูกสอบถามในแผงควบคุมของผู้ดูแลระบบ หากแอปพลิเคชันของคุณอนุญาตให้คุณลองเปลี่ยนลำดับชั้นเป็นเท็จสำหรับ "ศิลปิน" CPT และดูว่าช่วยลดปัญหาหน่วยความจำได้
ไหม

คำตอบ:


1

ลองเปลี่ยนลำดับชั้น: falseในการกำหนด CPT ของคุณ (หากใบอนุญาตของคุณอนุญาต)

เมื่อตั้งค่า CPT เป็นลำดับชั้น: เป็นจริงโพสต์ทั้งหมดจะถูกสอบถามในแผงควบคุมของผู้ดูแลระบบซึ่งอาจทำให้เกิดปัญหาหน่วยความจำ


0

ปัญหาคือว่า CPT ถูกตั้งค่าเป็นลำดับชั้นเปลี่ยนสิ่งนี้เป็นลำดับชั้น: false ใน functions.php แก้ไขปัญหา


1
โปรดยอมรับคำตอบของคุณเองดังนั้นคำถามนี้สามารถปิดได้
cjbj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.