WooC Commerce nó ngày càng trở thành một mô-đun được sử dụng rộng rãi Tạp chí trực tuyến. SEO, quản lý sản phẩm và kho hàng, mã rõ ràng và trực quan, giao diện quản trị đơn giản và hàng nghìn plugin được phát triển cho Woo, chỉ là một số lý do khiến nó xứng đáng có cơ hội khi bạn nghĩ đến việc phát triển một cửa hàng trực tuyến.
Giống như bất kỳ CMS nào, Woo không tránh khỏi những điều kỳ lạ có thể xuất hiện trong các tình huống sử dụng hoặc tương tác khác nhau với các plugin WordPress khác.
Trên máy chủ có tài nguyên Phần cứng khá hào phóng, tôi nhận thấy rằng dịch vụ cơ sở dữ liệu .mysqld) bắt đầu yêu cầu gần 80– 90% RAM. Một vấn đề khá nghiêm trọng, vì đơn giản là tôi không hiểu lỗi 110 định kỳ xuất phát từ đâu (110: Hết thời gian kết nối).
Khi kiểm tra kỹ hơn các quy trình SQL, tôi phát hiện ra rằng một cơ sở dữ liệu có hai bảng với khối lượng khá lớn: wp_actionscheduler_actions Và wp_actionscheduler_logs.
Ở chế độ bình thường hành động theo lịch trình Nhưng Trình lập lịch hành động WooC Commerce chúng sẽ tự động bị xóa sau khi chúng được thực thi. Điều này không phải lúc nào cũng xảy ra và chúng vẫn bị chặn trong wp_actionsscheduler_actions với trạng thái: thất bạiThì đã hủy bỏThì chưa giải quyết hoặc hoàn thành.
Trong hình trên, các bảng “bộ lập lịch wp_actions” họ chỉ có hơn 15 MB một chút. Tôi xin lỗi, tôi không có cảm hứng để chụp ảnh màn hình khi họ có1,2GB. Mặc dù vậy, 15 MB là khá nhiều đối với một bảng chứa các hành động WooC Commerce đã lên lịch.
Những bảng này “PHÁT HIỆN” nó là kết quả của ca WP-Cron không xóa mục tình trạng chăm sóc au “thất bại“Thì “đã hủy bỏ” Và “hoàn thành“. Thông thường những mục này phải được tự động xóa khỏi cơ sở dữ liệu.
Các hành động được lập trình và trạng thái của chúng có thể được nhìn thấy rất dễ dàng trong WooC Commerce →Trạng thái →hành động theo lịch trình.
Làm thế nào để chúng ta làm sạch cống? “thất bại“Thì “đã hủy bỏ” Và “hoàn thành” TỪwp_actionscheduler_actions Và wp_actionscheduler_logs
Chúng ta truy cập cơ sở dữ liệu thông qua phpMyAdmin, sau đó trong SQL chúng ta lần lượt thực thi các dòng lệnh:
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'
Một khi chiếc bàn này được làm sạch, điều đó không có nghĩa là vấn đề đã được giải quyết. Như mình đã nói ở trên, nguyên nhân chính là do dịch vụ WP-Cron bị vô hiệu hóa vì nhiều lý do. Vì vậy, các mục có trạng thái “thây ma” chúng không thể bị xóa được nữa.
Điều rất quan trọng cần biết là nếu bạn có một cửa hàng trực tuyến trên WooC Commerce và nó được kết nối với Cửa hàng Facebook thông qua plugin “Facebook dành cho WooC Commerce“, nó tự động đồng bộ hóa các sản phẩm WooC Commerce với tài khoản Cửa hàng Facebook của bạn. Và anh ấy làm điều đó cứ sau 15 phút. Nếu các mục SQL này không được kiểm soát, bạn có thể nhận được hàng trăm nghìn dòng “wc_facebook_regenerate_feed” TRONG “wp_actionscheduler_actions“.
Khoảng thời gian này phù hợp với những cửa hàng có số lượng đơn hàng lớn và cần phải cập nhật liên tục lượng sản phẩm trong Facebook Shops. Nếu bạn vẫn cho rằng việc đồng bộ hóa giữa Facebook và cửa hàng của mình có thể được thực hiện 24 giờ một lần thì dòng mã bên dưới có thể giúp bạn.
Mở tệp tin.php của chủ đề WordPress / WooC Commerce mà cửa hàng của bạn đang chạy và thêm:
add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );
Tiếp theo, chúng ta có thể đặt khoảng thời gian một tuần để tự động dọn dẹp:
add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
function wpb_action_scheduler_purge() {
return WEEK_IN_SECONDS;
}
Khi những thay đổi này được lưu, bạn sẽ không còn gặp vấn đề với các bảng khổng lồ nữa. “wp_actionscheduler_actions”.



@tàng hình
Cảm ơn sự giúp đỡ. Bạn tiết kiệm ngày của tôi và mua sắm. Tôi chỉ phát hiện ra điều này sau sự cố webshop của tôi. Nhiều plugin đã bắt đầu kết xuất đầu ra của chúng vào bảng đó và nó lấp đầy… Việc sử dụng bảng 9,2 GB đã khiến chủ nhà của tôi phải từ bỏ thời gian thích hợp của mình. Bây giờ tôi cắt bằng mã đẹp!
Chỉ là một câu hỏi về sợi dây rơi trên bàn này “wpb_action_scheduler_purge” nó là mặc định trong db hay tôi phải đổi tên nó thành thứ gì đó trong db của tôi (theo mặc định db của tôi không được gọi là 'wp_’ ) hoặc có lẽ nó là một hàm?
Cảm ơn sự giúp đỡ và bài viết siêu hay
Lời chào
Netzie