由于使用woocommerce优惠券生成器插件生成了400,000张优惠券以及缓慢的MySQL服务器过载和响应,服务器响



我决定尝试WooCommerce插件的优惠券生成器,并发现它很棒。我只知道这会对我们的网站性能造成巨大挫折。 我们的网站在 2 台专用服务器上运行,每台服务器有 16 个 CPU 核心,用于网络服务器和数据库服务器。我们必须观察到,自从使用 WooCommerce 插件的优惠券生成器创建了超过 400,000 张优惠券(这是一个我不知道的错误并且是无知的,因为我认为它不会对网站上的缓慢响应造成任何挫折(,该网站最终变得非常慢。响应大约需要 40 到 60 秒。加载时间很长,不到 1 秒。

在检查时,数据库服务器。 我们得到了以下结果:

root@mysql ~]# 顶部 -H

顶部 – 12:34:47 最多 6 天, 11:05, 2 个用户, 平均负载: 32.71, 34.69, 39.46 任务:共528个,正在运行的43个,睡眠中的485个,停止的0个,僵尸0个 CPU 处理器: 86.1%us, 12.3%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 1.5%si, 0.0%st 内存:总计 10120336k,已使用 7859684k,2260652k 空闲,182484k 缓冲区 交换:总计 4095996k,已使用 0k,4095996k 免费,6448320k 缓存

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 35108 mysql 20 0 1898m 703m 12m R 19.9 7.1 0:01.74 mysqld 35104 mysql 20 0 1898m 703m 12m R 19.3 7.1 0:01.71 mysqld 35117 mysql 20 0 1898m 703m 12m R 19.3 7.1 0:00.79 mysqld 35111 mysql 20 0 1898m 703m 12m R 18.9 7.1 0:01.65 mysqld 35080 mysql 20 0 1898米 703米 12米 R 18.6 7.1 0:02.25 mysqld 35065 mysql 20 0 1898m 703m 12m R 18.3 7.1 0:01.68 mysqld 35134 mysql 20 0 1898m 703m 12m R 18.3 7.1 0:00.73 mysqld 35053 mysql 20 0 1898m 703m 12m R 18.0 7.1 0:04.17 mysqld 35121 mysql 20 0 1898m 703m 12m R 18.0 7.1 0:01.79 mysqld 35133 mysql 20 0 1898米 703米 12米 R 18.0 7.1 0:00.76 米sqld 35126 mysql 20 0 1898m 703m 12m R 17.6 7.1 0:00.71 mysqld 35127 mysql 20 0 1898米 703米 12米 S 17.6 7.1 0:01.07 mysqld 35136 mysql 20 0 1898m 703m 12m R 17.6 7.1 0:00.65 mysqld 35141 mysql 20 0 1898米 703米 12米 R 17.6 7.1 0:00.76 米sqld 35094 mysql 20 0 1898米 703米 12米 R 17.3 7.1 0:01.71 米sqld

这是非常超载的。该网站调用超过80MB的MYSQL表,这是非常重的。

我想问一下,因为,我们如何将您使用插件生成的 400,000 张优惠券减少到 20,000 张,因为它会影响我们,因此我们每月支付大量费用来主网站。除此之外,该网站的响应量非常大。

请任何人帮忙!

要使用内置功能删除优惠券,您可以使用wp_delete_post( $id );作为 WooCommerce 将优惠券存储为自定义帖子类型。

因此,每次初始化管理区域时,以下函数都会运行并删除100张优惠券,如果需要,您可以增加限制

add_action( 'admin_init', 'count_coupon' );
function count_coupon() {
global $wpdb;
if ( ! is_user_logged_in() ) {
return;
}
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
global $wpdb;
$copuns = $wpdb->get_results( "SELECT ID FROM {$wpdb->prefix}posts WHERE post_type = 'shop_coupon' LIMIT 100" );
foreach ( $copuns as $copun ) {
wp_delete_post( $copun->ID );
}
}

您可以直接从MySQL中删除这些优惠券,但我更喜欢这种方式。

最新更新