데이터베이스의 wp_woocommerce_sessions가 너무 큼 [해결 방법]

다른 기사에서 말했듯이 WooCommerce 점점 강력하고 유연한 모듈로 WordPress를 스타트 업 비즈니스에 이상적인 온라인 스토어.

겸손한 온라인 상점의 경우 WooCommerce는 "공유 호스팅"에서 실행할 수 있으며 사용 된 테마가 많은 리소스를 소비하지 않고 다른 모듈 (플러그인)을 남용하지 않는 경우 하루에 5.000 개의 제품 / 100 개의 주문을 쉽게 지원할 수 있습니다.

소스 코드 최적화 (WP 테마), 모듈 (WP 플러그인) 및 데이터베이스 최적화 또한 우리가 매우주의해야 할 두 가지 측면이 있습니다.

저번에 겸손한 온라인 상점이 시작되는 것을 알아 차 렸습니다. 전용 서버에서 많은 RAM 및 CPU 리소스를 소비합니다. 풍부한. 이처럼 자원의 높은 소비로 인해 서버의 "로드"가 증가하고 온라인 상점 페이지의로드 시간이 길어졌습니다.

웹 서버에 부당하게 높은로드가 있음을 발견하면 조치를 취하기 전에 원인을주의 깊게 조사하는 것이 좋습니다.

데이터베이스에서 나는 테이블 "wp_woocommerce_sessions"거대하다. 6GB가 넘었습니다. 일반적으로 총 100MB를 초과하지 않는 데이터베이스의 테이블에 대한 거대한 볼륨입니다.

wp_woocommerce_sessions는 무엇입니까?

그의 이름에서 짐작할 수 있듯이 테이블 "wp_woocommerce_sessions”PHP 세션 (PHP 세션).
이러한 세션은 사이트 (또는 웹 로봇) 사용자의 작업이며 쿠키를 통해 데이터베이스에 도달하는 대부분의 시간입니다. 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 이전에는 쿠키를 통해 고객 세션을 캡처 한 다음 WordPress 테이블에 저장했습니다. "wp_options".
대형 매장의 경우이 방법은 종종 재난을 초래했습니다. "Wp_options"는 일반 옵션 및 설정에 사용되는 WordPress의 필수 테이블입니다. 에 저장된 클라이언트 세션 식별 및 수동 삭제 wp_options 쉬운 일이 아니 었습니다.
WooCommerce 성능은 최고가 아니었고 시간 경과에 따른 확장 성은 민감한 부분이었습니다.

2.5 년 WooCommerce 2015 출시와 함께 WooCommerce 개발자는 다음을 기반으로 새로운 WooCommerce 세션 처리 및 저장 시스템을 도입했습니다. WP 세션 관리자. 이 시스템은 출현으로 이어졌습니다. wp_woocommerce_sessions. 데이터베이스에서 다른 테이블과 상호 작용하지 않는 클라이언트 세션 전용 테이블입니다. 중대한 오류의 경우 손실이 최소화되어야합니다.

내가 알아 차린 바에 따르면 WooCommerce 2.5 이전에 출시되었으며 시간이 지남에 따라 지속적인 업데이트를받은 온라인 상점은 클라이언트 세션의 자동 삭제에 몇 가지 문제가 있습니다. 업데이트를 따라 가지 못한 최신 버전의 WooCommerce 2.5 또는 WordPress / WooCommerce 플러그인에 나타난 버그 일 가능성이 높습니다.

제 경우에는 파일에 추가 된 기능과 충돌했습니다. functions.php 테마의 세션이 만료 된 후 자동 삭제를 방지합니다. woocommerce_sessions.
이러한 문제가 발생하면 가능한 모든 원인을주의 깊게 조사해야합니다. SQL 오류, SQL 권한, 크론 작업, 다른 플러그인과의 충돌 및 마지막으로 코드에서 변경 한 사항을 확인하십시오.

WooCommerce는 고객 세션을 관리 할 수있는 플러그인을 29 달러에 제공하는 것을 확인했습니다. “WooCommerce에 대한 명확한 카트 및 세션“. 물론 예약 된 세션 삭제 외에도 모듈에는 도움이 될 수있는 몇 가지 도구가 있습니다.

더 간단한 옵션 woocommerce_sessions”하루 간격으로, 다음 코드에서 사용할 수 있습니다. 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, 리눅스, Windows, WordPress, WooCommerce 및 LEMP 웹 서버 구성 (Linux, NGINX, MySQL 및 PHP)에 대해. 내가 쓴다 StealthSettings2006 년부터 .com을 시작했고 몇 년 후 iHowTo에 글을 쓰기 시작했습니다. 생태계의 장치에 대한 팁 튜토리얼 및 뉴스 Apple: iPhone, iPad, Apple 시계, HomePod, iMac, MacBook, AirPods 및 액세서리.

코멘트를 남겨