WordPressがリストビューですべてのカスタム投稿タイプのメタデータを取得する


9

PHPが死にかけているというWordPressで問題が発生しています。メモリを増やしましたが、PHPプロセスが100%のCPU使用率にジャンプしてから終了し、Apacheが500エラーをスローします。

Apacheで何かをログに記録したり、PHP / MySQLでエラーをログに記録したりしましたが、一般的な500エラー以外は何も記録されません。

500号はリストページにあります。例:

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

次のような日付の並べ替えを追加すると、WordPressには現在1200以上のアーティストエントリがあります。

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

次に、リストはうまくロードされます。私はMySQLクエリログに座って見ましたが、WordPressが10個程度のリストを作成するためにすべての投稿(すべて1200個)のメタデータをロードしているようです。クエリの1つだけで、92000行が返されます。高度なカスタムフィールドと独自のフレームワークを持つテンプレートを使用しているため、各投稿にはかなりの量のメタデータが添付されています。これはPHPで処理するにはデータが多すぎると思います。ここで上限に達しました。1200の投稿は来年には簡単に2倍になるでしょう。

最初のページの読み込みを強制して日付の並べ替えを追加するか、すべてのメタデータの読み込みに関する問題を修正するにはどうすればよいですか?


ACFや他のプラグインを無効にしてみましたか?私はかつて同様の問題を抱えていたと思います、そしてここの犯人はWP自体ではなくACFにあると思います。たとえば、ACFはメタデータをリビジョンに追加してから、すべてをロードします。それがあなたを助ける他の人々を助けるので、この問題の原因が何であるかを確認してください。
kraftner 2016

@kraftnerがACFを無効にしたので、何の違いもありません。
Paul Cullen

wp-config(WP_MAX_MEMORY_LIMIT)でどのくらいのメモリを使用していますか?memory_limitのPHP.INI値は何ですか?それらを最大限に引き上げてみてください。また、mysql構成ファイルを確認します。
Emanuel Rocha Costa

Iveは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
ポール・カレン

1
カスタム投稿タイプの「アーティスト」は(ページのように)階層的ですか?..もしそうなら、すべての投稿が管理ダッシュボードで照会されるため、これが原因である可能性があります。アプリケーションで許可されている場合は、「アーティスト」CPTの階層をfalseに変更して、メモリの問題が軽減されるかどうかを確認できます
locomo

回答:


1

CPT定義の階層を変更してみてください(アプリケーションで許可されている場合)。

CPTが階層的に設定されている場合:trueすべての投稿が管理ダッシュボードでクエリされ、メモリの問題が発生する可能性があります。


0

問題は、CPTが階層に設定されていて、これを階層に切り替えたことです。functions.phpのfalseで問題が解決しました。


1
自分の答えを受け入れて、この質問を終了できます。
cjbj 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.