巨大なSQLテーブルを修正:wp_actionscheduler_actions&wp_actionscheduler_logs [WooCommerceのヒント]

WooCommerce 広く使用されているモジュールになっています のオンラインショップ. SEO、製品、在庫管理、クリーンで直感的なコード、シンプルな管理インターフェイス、Woo用に開発された数千のプラグインは、オンラインストアの開発を考えるときにチャンスに値する議論のほんの一部です。

他のCMSと同様に、Wooも例外ではなく、他のWordPressプラグインの使用や相互作用のさまざまなシナリオで発生する可能性があります。
リソースサーバー上 ハードウェア かなり寛大で、私はそれに気づきました データベースサービス (mysqldを)RAMのほぼ80〜90%を必要とし始めます。 エラー110が定期的にどこから来るのか理解できなかったので、かなり深刻な問題です(110:接続がタイムアウトしました).
SQLプロセスを詳しく調べたところ、データベースにはかなり大きなボリュームを持つXNUMXつのテーブルがあることがわかりました。 wp_actionscheduler_actions si wp_actionscheduler_logs.

正常に スケジュールされたアクションWooCommerceアクションスケジューラ 実行後に自動的に削除する必要があります。 これは常に発生するとは限らず、次のステータスでwp_actionsscheduler_actionsでスタックします。 失敗した, キャンセル, ペンディング または コンプリート.

上の画像では、テーブル "wp_actionsscheduler「彼らは持っているだけです 15MB強。 彼らが持っていたときにスクリーンショットを撮る気にならなかったのは残念です 1.2 GB。 それでも、WooCommerceのスケジュールされたアクションを含むテーブルには15MBで十分です。
これらの「膨張した」テーブルは、その結果として生じます WP-Cronはエントリを削除しません ステータスを持っている人」失敗した"、"キャンセル"そして"コンプリート「。 通常、これらのエントリはデータベースから自動的に削除されます。
スケジュールされたアクションとその状態は、非常に簡単に確認できます。 WooCommerce →  状態 →  スケジュールされたアクション.

側溝の掃除方法」失敗した"、"キャンセル"そして"コンプリート"で wp_actionscheduler_actions si wp_actionscheduler_logs

phpMyAdminを介してデータベースにアクセスし、SQLでコマンドラインを順番に実行します。

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'

このテーブルがクリーンアップされても、問題が解決されたことを意味するわけではありません。 上で述べたように、主な原因はさまざまな理由でWP-Cronサービスが無効になっていることです。 したがって、「ゾンビ」ステータスのエントリは削除できなくなります。
WooCommerceにオンラインストアがあり、プラグインを介してFacebookショップに接続されている場合は、それを知っておくことが非常に重要です。WooCommerceのためのFacebook"、WooCommerce製品をFacebookショップアカウントと自動的に同期します。 そして彼はそれを約15分で行います。 これらのSQLエントリが制御されていない場合、数十万行を取得できます。」wc_facebook_regenerate_feed「で」wp_actionscheduler_actions"

この間隔は、注文数が多く、FacebookShops製品の在庫を常に更新する必要がある店舗では問題ありません。 Facebookとストア間のこれらの同期が24時間にXNUMX回実行できるとまだ考えている場合は、以下のコード行が役立ちます。

ストアが実行されているWordPress / WooCommerceテーマのfunctions / phpファイルを開き、以下を追加します。

add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );

以下では、自動クリーニングの間隔をXNUMX週間に設定できます。

add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
function wpb_action_scheduler_purge() {
 return WEEK_IN_SECONDS;
}

これらの変更を保存すると、「wp_actionscheduler_actions」の巨大なテーブルで問題が発生することはありません。

巨大なSQLテーブルを修正:wp_actionscheduler_actions&wp_actionscheduler_logs [WooCommerceのヒント]

著者について

ステルス

ガジェットとITのすべてに情熱を注いで、ステルスで喜んで書いていますsettings2006年以来の.comと私はあなたと一緒にコンピュータとオペレーティングシステムについての新しいことを発見したいです macOS、Linux、 Windows、iOSおよびAndroid。

コメント