我创建了一个 woocommerce 插件, 插件本身运行完美。 然而,只要它需要运行,我就会遇到奇怪的性能问题。 仅从登录并运行插件的浏览器完全无法访问该网站(前端和后端)。 前端和后端都在加载,直到插件完成。 更奇怪的是,它在另一个浏览器上运行得很好。这也是在高端专用服务器上运行的,当它运行时,服务器上的负载非常低。有什么线索吗?require __DIR__ . '/vendor/autoload.php';error_reporting(E_ALL);ini_set('display_errors', 1);include_once($_SERVER['DOCUMENT_ROOT'].'/wp-config.php');use Automattic\WooCommerce\Client;$woocommerce = new Client(woocommerce_api_url, api_key, api_secret,['version' => 'wc/v3','timeout' => '99999',]);echo '<pre>';$db = new DBfdr();$i=0;$page = 1;$products = [];$all_products = [];do{ try { $products = $woocommerce->get('products',array('per_page' => 100, 'page' => $page)); } catch(HttpClientException $e) { die("Can't get products: $e"); } $all_products = array_merge($all_products,$products); $page++;注意:DBfdr 类包含一个简单的函数,用于管理与 sql 服务器的 pdo 连接。
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
那段代码看起来不太好,为什么您需要制作一个从外部加载 wp 的插件,然后通过 Woocommerce Client Api 获取产品列表,然后循环所有这些来创建 if 条件。
如果您只是在 WP 标准插件结构中传递,使用全局 $wpdb 类并通过一些连接执行查询,那么效率会更高。
也就是说,您面临的问题可以通过在代码之前添加以下内容来解决:
ignore_user_abort( true );
/* Don't make the request block till we finish, if possible. */
if ( function_exists( 'fastcgi_finish_request' ) && version_compare( phpversion(), '7.0.16', '>=' ) ) {
fastcgi_finish_request();
}
慕容3067478
TA贡献1773条经验 获得超3个赞
出现问题是因为 wp-config.php 包含在开头。
wp-config.php 到底有
require_once(ABSPATH . 'wp-settings.php');
它初始化了一些核心的 WordPress 函数,这些函数又“锁定”了 WordPress 的核心函数。会议。 我设法通过删除解决了这个问题
include_once($_SERVER['DOCUMENT_ROOT'].'/wp-config.php');
并将其替换为自定义定义
- 2 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消