Liste görünümünde tüm özel yayın türleri için meta verileri alma WordPress


9

PHP'nin ölmekte olduğu WordPress'de bir sorun yaşıyorum. Belleği artırdım, ancak PHP işlemi% 100 CPU kullanımına atlıyor ve sonra ölüyor ve Apache 500 hatası veriyor.

Bir şey günlüğe kaydetmek için Apache ya da bir hatayı günlüğe kaydetmek için PHP / MySQL almaya çalıştım, ancak hiçbir şey genel 500 hatasından sonra kaydedilmedi.

500 sorunu liste sayfasındadır, örneğin:

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

Şu şekilde bir tarih sıralaması eklersem şu anda WordPress'te 1200'den fazla sanatçı girişimiz var:

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

Sonra liste düzgün, hızlı bile yüklenir! Oturdum ve MySQL sorgu günlüğünü izledim ve 10 kadar liste üretmek için WordPress her bir yazı (hepsi 1200) için meta veri yüklüyor gibi görünüyor. Sorgulardan sadece biri için bu, 92000 satır döndürüyor. Gelişmiş özel alanlar ve kendi çerçeveli bir şablon kullanıyorum, böylece her yazı bağlı meta veri adil bir yığın vardır. Bu PHP'nin işlemek için çok fazla veri olduğunu düşünüyorum ve burada bir tavana vuruyorum. 1200 gönderinin önümüzdeki yıl kolayca ikiye katlanması bekleniyor.

İlk sayfa yüklemesini tarih sıralaması eklemeye nasıl zorlayabilirim veya tüm bu meta verileri yüklemeyle ilgili sorunu nasıl düzeltebilirim?


ACF'yi ve diğer eklentileri devre dışı bırakmayı denediniz mi? Sanırım bir zamanlar benzer bir sorunum vardı ve buradaki suçlunun WP'nin kendisi değil ACF ile olduğunu düşünüyorum. örneğin ACF, revizyonlara meta veriler ekler ve sonra bunları da yükler. Lütfen bu sorunun kaynağının ne olduğundan emin olun, çünkü bu size yardımcı olan diğer kişilere yardımcı olacaktır.
kraftner

Hey @kraftner ACF'yi devre dışı bıraktı ve herhangi bir fark yaratmadı.
Paul Cullen

Wp-config (WP_MAX_MEMORY_LIMIT) üzerinde ne kadar bellek kullanıyorsunuz? Memory_limit için PHP.INI değeriniz nedir? Onları maksimuma çıkarmayı deneyin. Ayrıca, ben mysql yapılandırma dosyasına bir göz atın.
Emanuel Rocha Costa

Ive PHP ve WP_MAX_MEMORY_LIMIT'i geçici olarak 512'ye yükseltti. MySQL yapılandırma 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
özel yazı türü "sanatçı" hiyerarşik mi (sayfalar gibi)? .. öyleyse, tüm gönderiler yönetici kontrol panelinde sorgulanacağı için bu suçlu olabilir. Uygulamanız izin veriyorsa, "sanatçı" CPT için hiyerarşik olarak false değerini değiştirmeyi deneyebilirsiniz ve bunun bellek sorunlarını azaltıp azaltmadığına bakın
locomo

Yanıtlar:


1

CPT tanımınızda hiyerarşik: false değerini değiştirmeyi deneyin (uygulamanız izin veriyorsa).

CPT'ler hiyerarşik olarak ayarlandığında: true, tüm mesajlar yönetici kontrol panelinde sorgulanır ve bu da bellek sorunlarına neden olabilir.


0

Sorun, CPT'nin hiyerarşik olarak ayarlanmış olması ve bunu hiyerarşik olarak değiştirmesiydi: function.php içindeki problem çözüldü.


1
Lütfen kendi cevabınızı kabul edin, böylece bu soru kapatılabilir.
cjbj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.