web-dev-qa-db-ja.com

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

私はWordPressでPHPが死んでいる問題を抱えています。メモリを増やしましたが、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行が返されます。 Advanced Custom Fieldsと独自のフレームワークを持つテンプレートを使用しているので、各投稿にはかなりの量のメタデータが添付されています。これはPHPが処理するには多すぎるデータだと私は考えています。ここで上限を打っています。 1200の投稿は来年中に簡単に倍増する可能性があります。

最初のページの読み込みで日付の並べ替えを強制的に追加するか、すべてのメタデータを読み込むことで問題を解決するにはどうすればよいですか。

9
Paul Cullen

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

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

1
locomo

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

0
Paul Cullen