Wordpress REST Api:如何为多个并发呼叫提供服务?

问题描述 投票:0回答:1

我正在开发WordPress插件,并且在使用REST API时遇到性能问题。我注册了一条路由,如下所示(类中的代码):

public function __construct()
{
    add_action('rest_api_init', array($this, 'register_rest_load'));
    add_action('admin_enqueue_scripts', array($this, 'enqueue_scripts'));
}

public function register_rest_load()
{
    //Versioned namespace 
    $namespace = 'scs/v1';

    // Register the route
    register_rest_route($namespace, '/load/(?P<id>\d+)', array(
        'methods'   => WP_REST_Server::ALLMETHODS,
        'callback'  => array($this,'loadProfile'),
        'args' => array()
    ));
}

函数“ loadProfile”遍历了一个加载脚本,该脚本在从其他数据库中收集数据时将xhr消息返回到前端ajax。由于这是完美的工作方式,因此我将不在此处包括。我在这里面临的问题是,如果我对[

进行多次ajax调用

“ my-url.de/wp-json/scs/v1/load/[any_int_here]”

同时,它每次仅提供1个ajax调用。但是它发生了,因此“ loadProfile”功能需要3分钟才能运行。当我从自己的硬编码直接称为ajax(可能同时调用6个)更改为更安全的WordPress REST(仅1个调用)时,我失去了性能。我也尝试了WordPress ajax,但是那里也一样……只提供1次。

我有什么办法弄乱创建路由和端点吗?我可以针对每个客户将其路线和终点修改为多份吗?还是我应该回到手动Ajax?

谢谢。如果我缺少任何信息,请随时提问。

php ajax wordpress rest wordpress-rest-api
1个回答
0
投票

由于是PHP,因此您无法进行多线程处理。您将无法同时向同一个客户提供多个呼叫。

但是过去我做了一些丑陋的修改来克服这个问题,您可以创建多个指向相同服务器,具有相同文档根目录的子域。

Ex:

    http://api1.test.com   \
    http://api2.test.com    - /var/www/htdocs/wp-api
    // .....               /
    http://apiN.test.com  /

通过这种方式,您可以根据需要发出异步请求(当然,每个请求到不同的子域),或者至少可以处理多少服务器。

© www.soinside.com 2019 - 2024. All rights reserved.