为了账号安全,请及时绑定邮箱和手机立即绑定

运行插件时,wordpress 变得无响应

运行插件时,wordpress 变得无响应

PHP
慕无忌1623718 2023-12-15 17:04:03
我创建了一个 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();

}


查看完整回答
反对 回复 2023-12-15
?
慕容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');

并将其替换为自定义定义


查看完整回答
反对 回复 2023-12-15
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信