Ich habe ein Problem in WordPress, bei dem PHP im Sterben liegt. Ich habe den Speicher vergrößert, aber der PHP-Prozess springt auf 100% CPU-Auslastung, stirbt dann ab und Apache gibt einen 500-Fehler aus.
Ich habe versucht, Apache dazu zu bringen, etwas zu protokollieren, oder PHP / MySQL, einen Fehler zu protokollieren, aber es wird nichts anderes als ein allgemeiner 500-Fehler protokolliert.
Die 500-Ausgabe befindet sich auf der Listenseite, z.
/wp-admin/edit.php?post_type=artist
Wir haben derzeit über 1200 Künstlereinträge in WordPress, wenn ich eine Datumssorte wie diese anhänge:
/wp-admin/edit.php?post_type=artist&orderby=date
Dann wird die Liste gut geladen, sogar schnell! Ich habe das MySQL-Abfrageprotokoll gesehen und es scheint, dass WordPress die Metadaten für jeden einzelnen Beitrag (alle 1200) lädt, um die Liste von 10 oder so zu erstellen. Bei nur einer der Abfragen werden 92000 Zeilen zurückgegeben. Ich verwende erweiterte benutzerdefinierte Felder und eine Vorlage mit einem eigenen Framework, sodass jedem Beitrag ein angemessener Teil der Metadaten beigefügt ist. Ich denke, dass dies zu viele Daten sind, als dass PHP sie verarbeiten könnte, und ich stoße hier an eine Obergrenze. Die 1200 Stellen dürften sich im nächsten Jahr leicht verdoppeln.
Wie kann ich entweder das Laden der ersten Seite erzwingen, um die Datumssortierung anzuhängen, oder das Problem beim Laden all dieser Metadaten beheben?
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
Antworten:
Versuchen Sie, die Hierarchie zu ändern : false in Ihrer CPT-Definition (sofern Ihre Anwendung dies zulässt).
Wenn CPTs auf hierarchisch: true eingestellt sind, werden alle Beiträge im Admin-Dashboard abgefragt, was zu Speicherproblemen führen kann.
quelle
Das Problem war, dass das CPT auf hierarchisch eingestellt war und dies auf hierarchisch umgestellt wurde: false in der functions.php löste das Problem.
quelle