web-dev-qa-db-ja.com

Wp_delete_postでは30ポスト/秒は遅いと考えられますか?

私のWordPressには約9万件の投稿があり、それらのほとんどをプラグインを使用して削除したいと考えています。削除する必要がある投稿からすべてのIDを取得してから、次の操作を行います。

// $delete_posts contains all IDs
foreach ($delete_posts as $dp) {
    wp_delete_post($dp, true);
}

私のプラグインが期待通りに動かないのはなぜだろうと私はここに座っています - 私はPhpMyAdminで私のデータベースをチェックし、投稿が非常にゆっくり削除されることに気付きました。 1秒あたり30の投稿ですか?それは確かに遅すぎます。または、投稿を削除するためにこの機能を誤用していませんか

1
beeef

wp_insert_post()wp_delete_post()などのコンテンツを扱う関数の速度係数は、状況とそれが扱っているコンテンツに大きく依存します。

簡単な例を作りましょう。注目の画像、多数のタグ、カテゴリ、1000のカスタムフィールド、割り当てられた分類法、さらに100を含む投稿があります。この投稿を削除するコマンドを実行するとき、データベースからパーマリンクを削除しようとしているのではなく、以下のことも試行しています。

  • 投稿のサムネイルを切り離す
  • 多数の用語関係を削除する
  • ループを実行し、何百万ものメタデータを扱う
  • そしておそらくもっと。

SQLコマンドを実行してデータベースから投稿のデータを削除するだけの場合(推奨されません)、1秒間に数千件の投稿が速くなる可能性があります。しかし、コンテンツを完全に削除し、関係を解除することは大変です。

3
Jack Johansson

はい、間違いなく30秒で投稿を削除できません。しかし、問題はそれがワードプレスではないということです - それはコアPHPのどちらか別のフレームワークかもしれません。私の意見では、データベースmysqlとその最適化に関する問題。レコードの数、主キーの数(IDまたは投稿名で削除しますか)、列の数などを確認するだけです。重要なのは、そのテーブルがすばやく開くことを確認することです。例えば、3Mレコードを含む私たちの最大のプロジェクトでは、彼らはかなり早く削除しました - http://merehead.com/projects/frevend/

0
Joe_19