Отключаем от admin-ajax.php — снижаем блокировки сессий в PHP на сервере

В мне часто задают вопросы, связанные с работой скрипта admin-ajax.php на хостинге (часто его работа прерывается, заканчивается ошибкой или вызывает нагрузку на хостинг). Как решить все проблемы?

 

Что такое admin-ajax.php

Скрипт admin-ajax.php (так называемый WordPress heatbeat, включен с версии WordPress 3.5.2) выполняет продление пользовательской сессии WordPress — для удобства использования административной панели. Если администратор или редактор часто работает с сайтом, то это избавляет от необходимости каждый раз вводить логин/пароль. Но для 99% посетителей сайта этот функционал, скорее всего, не нужен: они ведь только читает контент, не редактируют его.

В ряде случаев admin-ajax.php может отвечать за повышенное потребление памяти и CPU на хостинге: за счет частых — каждые 15 секунд — обращений к базе данных на фоне других запросов (большинство из которых уже могут быть закэшированы). Поскольку функционал admin-ajax.php является динамическим (его нельзя кэшировать), то облако Айри, как и любой другой кэширующий инструмент, пропускает все запросы напрямую к серверу, создавая существенную нагрузку.

dmin-ajax.php

Как бороться с admin-ajax.php

Лучшим способом устранение нагрузки от admin-ajax.php является полное отключение этого функционала. Лучше всего это осуществить либо редактированием внутри движка WordPress, либо путем установки соответствующего плагина.

Для отключения WordPress Heartbeat для всех страниц, кроме страницы создания новой записи, нужно добавить в header.php или function.php вашей темы:

 

 add_action( 'init', 'my_deregister_heartbeat', 1 );
function my_deregister_heartbeat() {
 global $pagenow;
if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow )
 wp_deregister_script('heartbeat');
 }

 

Для решения этой проблемы через плагины WordPress можно использовать AJAX Heartbeat Tool или Heartbeat Control.

Отключаем от admin-ajax.php — снижаем блокировки сессий в PHP на сервере: 5 комментариев

  1. Спасибо очень помогла статья, реально в последнее время возросла нагрузка на сервер. После внедрения кода всё нормализовалось!

  2. Такая же проблема на хостинге бегет. Подскажите, этот код точно надо в header.php вставлять? Просто на другом сайте видел эту статью, там написано про function.php?

    1. В моей теме вставлен в header.php но в вашем случае возможно вставить в function.php. Темы разные, помним об этом. И эта проблем далеко не последняя есть еще косяки в жуткой нагрузке от Yoast SEO.

  3. Здраствуйте!
    В Гугл-вебмастере в разделе»Ошибки сканирования» такая ошибка:
    wp-admin/admin-ajax.php-код ответа 400.
    Когда переходишь по адресу
    wp-admin/admin-ajax.php открывается пустая страница в левом верхнем углу стоит 0
    У меня вопрос:Как избавиться от этой ошибки?
    Заранее Спасибо!

    1. Возможно у вас какие-то проблемы с самим WP, мб ошибка при установке была. Рекомендую обратиться к веб-мастеру. Возможно проблема решится просто перезаливкой одного файла.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *