データベース内のwp_woocommerce_sessionsが大きすぎます[修正方法]

他の記事で言ったように、 WooCommerce ますます堅牢で柔軟なモジュールであり、WordPress を スタートアップ企業に最適なオンラインストア.

控えめなオンライン ストアの場合、WooCommerce は「共有ホスティング」で実行でき、使用するテーマが多くのリソースを消費せず、他のモジュール (プラグイン) を悪用しない場合、5.000 日あたり 100 個の製品 / XNUMX 件の注文を簡単にサポートできます。

ソースコードの最適化 (WP テーマ)、モジュール (WP プラグイン) から データベースの最適化 また、非常に注意が必要な XNUMX つの側面もあります。

先日、ささやかなネットショップが始まっていることに気づきました 専用サーバーで大量の RAM と CPU リソースを消費する 寛大です。 このリソースの大量消費により、サーバーの「負荷」が増加し、オナイン ストア ページの読み込み時間が長くなります。

Web サーバーに不当に高い負荷がかかっていることに気付いた場合は、対策を講じる前に原因を慎重に調査することをお勧めします。

データベースでは、テーブル "wp_woocommerce_sessions「それは巨大です。 6GB以上ありました。 通常は合計で 100 MB を超えないデータベース内のテーブルの巨大なボリューム。

wp_woocommerce_sessionsとは何ですか?

彼の名前から推測できるように、テーブル "wp_woocommerce_sessions”PHP セッションを含む (PHPセッション).
これらのセッションは、サイト (または Web ロボット) のユーザーのアクションであり、ほとんどの場合、Cookie を介してデータベースにアクセスします。 wp_woocommerce_sessions には、ユーザーがショッピング カートに入れた商品に関するデータ、クーポン、配送料、顧客データ、および商品の注文プロセスに関連するその他の多くの情報が保存されます。

これらのセッションは、ユーザーがサイトに登録されているかどうかに関係なく作成され、通常は期限切れになり、しばらくすると自動的に削除されます。

残念ながら、これらのセッションが削除されるとは限らず、場合によってはwp_woocommerce_sessionsに永続的に保存されるため、このテーブルは非常に大きくなります。

テーブルを削除するにはどうすればよいですか wp_woocommerce_sessions SQLから?

1。 に行きます ダッシュボード →  WooCommerce →  状態 →  工具 (タブ)。

2. オプションまでスクロールします "明確な顧客セッション「。 注意してください! 顧客セッションを削除することは、ショッピング カートに入れたすべての製品を削除することを意味します。 これらのセッションを削除しているときにカートに商品を持っている顧客がいる場合、それらは消え、可能なオンライン注文は完了しません。

3. 「クリア」をクリックして操作を確認します。

この時点で「wp_woocommerce_sessions」テーブルは空なので、顧客のショッピング セッションはすべて削除されています。

問題は解決にはほど遠い。 wp_woocommerce_sessions SQL テーブルは再びデータを収集し、デフォルトでは再び比率を上げますが、これは望ましくありません。

顧客セッションが WooCommerce に永続的に保存されないようにする方法 - wp_woocommerce_sessions?

「wp_woocommerce_sessions」テーブルをデータベースから空にする方法を上で示しましたが、顧客セッションが再び集まる数日後に問題が再び発生します。

WooCommerce 2.5より前は、顧客セッションはCookieを介してキャプチャされ、WordPressテーブルに保存されていました。」wp_options"
大きな店舗の場合、この方法はしばしば災害につながりました。 「Wp_options」はWor​​dPressの重要なテーブルであり、一般的なオプションや設定で使用されます。 に保存されているクライアントセッションを特定して手動で削除する wp_options それは簡単な仕事ではありませんでした。
WooCommerceのパフォーマンスは最高ではなく、時間の経過に伴うスケーラビリティは敏感な点でした。

2.5年のWooCommerce2015のリリースに伴い、WooCommerce開発者は、に基づいた新しいWooCommerceセッション処理およびストレージシステムを導入しました。 WPセッションマネージャー. このシステムが登場したのは wp_woocommerce_sessions. データベース内で他のテーブルと対話しないクライアント セッション専用のテーブル。 重大なエラーが発生した場合、損失は最小限に抑える必要があります。

私が気付いたところによると、WooCommerce 2.5より前に立ち上げられ、時間の経過とともに絶えず更新されているオンラインストアには、クライアントセッションの自動削除に関するいくつかの問題があります。 ほとんどの場合、WooCommerce 2.5 の新しいバージョンまたは WordPress / WooCommerce プラグインで発生したバグで、更新に追いついていませんでした。

私の場合、ファイルに追加された関数との競合でした functions.php テーマの、そしてどれ からのセッションの期限切れ後の自動削除を防ぎます woocommerce_sessions.
このような問題に直面している場合は、考えられるすべての原因を注意深く調査する必要があります。 SQLエラー、SQL権限、Cronジョブは、他のプラグインと競合します。最後に、コードに加えられた変更を時間の経過とともに確認してください。

WooCommerceが顧客セッションを管理できるプラグインをたった29ドルで提供していることがわかりました。 「「WooCommerce の明確なカートとセッション「。 もちろん、セッションのスケジュールされた削除に加えて、モジュールにはあなたを助けることができるいくつかのツールがあります。

よりシンプルなオプション 「の予定された削除woocommerce_sessions」XNUMX日間隔では、次のコードで利用できます。 functions.php:

// clean cart every day
if (!wp_next_scheduled('cron_wc_clean_cart')) {
    wp_schedule_event( time(), 'daily', 'cron_wc_clean_cart' );
}

add_action ( 'cron_wc_clean_cart', 'wc_clean_session_cart' );
function wc_clean_session_cart() {
    global  $wpdb;

    $wpdb->query( "TRUNCATE {$wpdb->prefix}woocommerce_sessions" );
    $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key='_woocommerce_persistent_cart_" . get_current_blog_id() . "';" );
    wp_cache_flush();
}

ヘルプが必要な場合、または別の解決策がある場合は、コメントを残してください。

テクノロジーに情熱を注いでおり、オペレーティングシステムに関するチュートリアルをテストして作成するのが好きです。 macOS、Linux、 Windows、WordPress、WooCommerce、LEMP Webサーバーの構成(Linux、NGINX、MySQL、PHP)について。 私は書きます StealthSettings2006年から.com、そして数年後、私はiHowTo.Tipsチュートリアルとエコシステム内のデバイスに関するニュースを書き始めました。 Apple: iPhone、iPad、 Apple ウォッチ、HomePod、 iMac, MacBook、AirPodsおよびアクセサリ。

コメント