데이터베이스의 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".
더 큰 상점의 경우 이 방법은 종종 재앙으로 이어졌습니다. "ㅁ_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에 제공한다는 것을 보았습니다. admin스트레스 클라이언트 세션. "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();
}

도움이 필요하거나 다른 해결책이 있으면 의견을 남겨주세요.

Stealth: 기술에 대한 열정, 저는 운영 체제에 대한 튜토리얼을 테스트하고 작성하는 것을 좋아합니다. macOS, Linux, Windows, 에 대한 WordPress, WooCommerce 및 LEMP 웹 서버 구성(Linux, NGINX, MySQL 및 PHP). 나는 에 쓴다 StealthSettings2006 년부터 .com을 시작했고 몇 년 후 iHowTo에 글을 쓰기 시작했습니다. 생태계의 장치에 대한 팁 튜토리얼 및 뉴스 Apple: iPhone, iPad, Apple 시계, HomePod, iMac, MacBook, AirPods 및 액세서리.
새로운 기능