TTFB очень долго при добавлении пользовательской функции PHP в Wordpress - PullRequest
1 голос
/ 12 июня 2019

Я использую Wordpress REST API для создания контента, отображаемого в приложениях iOS и Android.

Так как WP отображает только 10 сообщений в REST API, я сделал собственную функцию php для отображения большего количества кода, и этот код вызывает очень длительное время TTFB.

Я связался с поддержкой сервера, и они отправилиошибки, полученные при попытке доступа к конечной точке API REST API

Вот их ответ:

connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("139.162.182.238")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=3, events=POLLOUT|POLLWRNORM}], 1, 299996) = 1 ([{fd=3, revents=POLLOUT|POLLWRNORM}])
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
sendto(3, "HEAD /wp-json/wp/v2/test_odgovor"..., 200, MSG_NOSIGNAL, NULL, 0) = 200
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)

Ниже приведен код, который используется для отображения более 10 сообщений в API REST:

add_filter( 'rest_endpoints', function( $endpoints ){
    if ( ! isset( $endpoints['/wp/v2/test_odgovor'] ) ) {
        return $endpoints;
    }
    unset( $endpoints['/wp/v2/test_odgovor'][0]['args']['per_page'] ['maximum'] );
    return $endpoints;
});
add_filter( 'rest_endpoints', function( $endpoints ){
      if ( ! isset( $endpoints['/wp/v2/test_odgovor'] ) ) {
        return $endpoints;
      }
    $endpoints['/wp/v2/test_odgovor'][0]['args']['per_page']['default'] = 2000;
    return $endpoints;
});

Есть ли какая-либо другая функция, которая может помочь отображать больше сообщений WP в API, или я должен изменить сервер?

Я не знаком с ошибками сервера, поэтому не знаючто я мог сделать здесь.Должен ли я изменить код в приложении и загрузить JSON по-другому?

РЕДАКТИРОВАТЬ - Таким образом, похоже, что обновление Wordpress до версии 5 вызвало эту проблему.Когда я понизил его до 4.9, TTFB был ниже 4 секунд.У кого-нибудь есть идея, почему более новая версия Wordpress вызывает это?

Любой совет приветствуется!

Спасибо.

1 Ответ

0 голосов
/ 12 июня 2019

Чтобы избежать проблемы с TTFB, вам нужно быстрее завершить работу на стороне сервера. Получение 2000 сообщений в одном запросе, похоже, занимает много времени. Увеличивайте это значение постепенно, например, 20, 30 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...