WordPress admin ajax php отключить

Содержание
  1. Stop admin-ajax?
  2. 1 Answer 1
  3. Как ускорить WordPress — избавляемся от admin-ajax
  4. Что такое admin-ajax.php
  5. Как бороться с admin-ajax.php
  6. Айри — облако для ускорения и защиты сайта, работает на уровне DNS, повышает конверсию сайта и улучшает поисковое ранжирование. Подключение за 2 минуты. Стоимость от 7950 в месяц.
  7. Свежие записи
  8. Рубрики
  9. Айри.рф
  10. Файл admin-ajax.php и нагрузка на сервер
  11. AJAX запросы и admin-ajax.php
  12. Большое количество запросов на admin-ajax.php
  13. Когда admin-ajax.php действительно является проблемой
  14. Запросы на admin-ajax.php занимают более 1 секунды
  15. Подозрительное содержание запроса
  16. Неузнаваемые IP адреса
  17. Слишком частая периодичность запросов
  18. Заключение
  19. Константин Ковшенин 12.02.2015 12.02.2015
  20. Подписаться на рассылку
  21. Читайте также
  22. Вебинары на WordPress.com
  23. Как добавить заголовок Sender в wp_mail()
  24. WordPress Meetup в Санкт-Петербурге пройдет 14 октября
  25. Локальный сервер для WordPress за 5 минут с VVV, VirtualBox и Vagrant
  26. Поиск по сайту
  27. Бесплатная книга
  28. Вакансии

Stop admin-ajax?

Is it possible to simply disable/stop admin-ajax.php from running? Have searched WordPress Doc. Have searched Google. Have searched this forum. Found no answer. Have also tried this, but it doesn’t work:

function stop_ajax() < define( 'DOING_AJAX', false ); >add_action( 'admin_init', 'stop_ajax' ); 

What do you mean by «disable/stop admin-ajax.pl from running»? What should be done if such request is sent and it’s disabled?

It’s not clear if you’re referring to wordpress heartbeat, but in this case, there are some good tutorials around the web explaining how to disable or better, how to limit it. This one is a good starting point siteground.com/tutorials/wordpress/limit-heartbeat

1 Answer 1

The first thing admin-ajax.php does is define DOING_AJAX . Then, it loads wp-load.php . It does some other stuff, and the first thing it comes across that you have control over is wp-config.php .

So if you want to stop all ajax, you can add to following to your wp-config.php file.

if( defined( 'DOING_AJAX' ) && DOING_AJAX )

If you don’t have access to the wp-config file, or just want to do it via a plugin, you can do that too. No need to add it to a hook since if it’s a request that doing ajax, it’s already defined.

/** * Plugin Name: Stop Ajax */ if( defined( 'DOING_AJAX' ) && DOING_AJAX )

There will be side effects if you’re using plugins or themes that require ajax, so be careful.

Источник

Как ускорить WordPress — избавляемся от admin-ajax

Большое потребление CPU

Большое потребление CPU

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

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

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

Читайте также:  Python str format float

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

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

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

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

add_action( ‘init’, ‘my_deregister_heartbeat’, 1 ); function my_deregister_heartbeat()

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

Айри — облако для ускорения и защиты сайта, работает на уровне DNS, повышает конверсию сайта и улучшает поисковое ранжирование. Подключение за 2 минуты. Стоимость от 7950 в месяц.

Свежие записи

Рубрики

  • Аналитика
  • Защита сайта
  • Интервью
  • Исследования
  • Мобильный сайт
  • Новости Айри
  • Поисковое продвижение
  • Руководства
  • Технические работы
  • Ускорение сайта
  • Хранение данных
  • Экосистема ускорения

Айри.рф

Если доступность сайта снизится — мы вернем вам деньги!

Источник

Файл admin-ajax.php и нагрузка на сервер

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

AJAX запросы и admin-ajax.php

AJAX — это асинхронные HTTP запросы выполняемые на странице с помощью языка JavaScript, позволяющие общаться с веб-сервером без полной перезагрузки страницы. Это позволяет делать интерфейсы более быстрыми, отзывчивыми и динамичными.

В WordPress такой подход используется во многих местах: работа с медиафайлами, автоматическое сохранение записей, управление ревизиями, работа с произвольными полями, работа с виджетами и многое другое. И чтобы каждый раз не изобретать велосипед, файл admin-ajax.php в WordPress предоставляет удобный API для работы с AJAX запросами.

В данной статье мы не будем рассматривать сам API, но стоит отметить, что несмотря на присутствие слова «admin» в названии файла, через него могут проходить запросы и с лицевой части сайта, включая анонимные запросы из тем и плагинов WordPress. К сожалению многие источники ошибочно советуют отключить этот файл, или заблокировать его паролем — этого делать не стоит.

Большое количество запросов на admin-ajax.php

Как мы уже упомянули, файл admin-ajax.php вызывается при автоматическом сохранении записей, а также для обновления блокировок, чтобы два пользователя не могли редактировать одну и ту же запись одновременно. Это реализует API в WordPress под названием Heartbeat (сердцебиение), который построен на базе admin-ajax.php.

Читайте также:  String matches method in java

Запросы на admin-ajax.php

При редактировании записи Heartbeat отправляет запрос на admin-ajax.php каждые 15 секунд (или каждые 60 секунд, в случае если вкладка в браузере не является активной). Поэтому если вы видите в логах вашего веб-сервера большое количество запросов на admin-ajax.php стоит их проанализировать.

  • С каких IP адресов приходят эти запросы
  • С какой периодичностью они приходят
  • Сколько времени в среднем занимает один такой запрос
  • Каково содержание запроса

Итак, если эти запросы приходят с вашего IP адреса, или с IP адресов редакторов на вашем сайте, если их периодичность около 15-60 секунд, если каждый такой запрос занимает не более 0.5 сек, и содержание запросов не содержит ничего необычного, то все в порядке — файл admin-ajax.php не является источником нагрузки на ваш сервер, независимо от «большого» количества запросов. А если ваш хостинг-провайдер уверяет вас в обратном, то советуем задуматься о его компетентности и о возможном переезде.

Когда admin-ajax.php действительно является проблемой

Рассмотрим несколько вариантов, когда admin-ajax.php действительно становится источником высокой нагрузки на ваш сервер, и как бороться с этой нагрузкой.

Запросы на admin-ajax.php занимают более 1 секунды

В среднем запросы на admin-ajax.php могут занимать около 300 мс. Если же на вашем сайте данные запросы выполняются более чем за одну секунду, то необходимо разобраться. Используйте средства профилирования, чтобы понять чем именно занят процесс все это время. Наверняка вы найдете медленную функцию в вашей теме или плагине, которая не имеет никакого отношения к AJAX запросам.

Если же вы не владеете средствами профилирования, или у вас нет времени разбираться в чужом коде, то попробуйте отключить все плагины и активировать стандартную тему WordPress. Затем активируйте плагины по порядку, чтобы понять какой из них является причиной медленных запросов на admin-ajax.php.

Бывает и такое, что запросы на admin-ajax.php становятся медленными не из-за конкретных плагинов или тем, а из-за неоптимальной конфигурации сервера MySQL. Такое бывает достаточно редко, и в этом случае следует заняться оптимизацией сервера базы данных.

Подозрительное содержание запроса

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

Эти файлы выбираются не спроста, ведь каждый из них исполняет событие admin_init даже для анонимных HTTP запросов. Многие разработчики плагинов и тем, ошибочно считают, что раз выполняется событие admin_init , значит пользователь выполнил вход и имеет права администратора. Это не так. Повторяем — событие admin_init выполняется даже для анонимных HTTP запросов.

Итак, в случае с уязвимостью плагина FancyBox for WordPress, вот примерно то, как выглядит «подозрительное содержание запроса»:

46.4.76.174 – – [04/Feb/2015:00:25:09 -0500] "POST /wp-admin/admin-ajax.php?page=fancybox-for-wordpress HTTP/1.1" 403 4207 INPUTBODY:action=update&mfbfw%5Bext.

Если вы обнаружили подобный запрос, необходимо понять на какой конкретно плагин или тему он нацелен, что именно он пытается сделать, удалось ли ему это. В подобных случаях мы рекомендуем обратиться к экспертам по безопасности WordPress.

Читайте также:  Java exception в конструкторе

Неузнаваемые IP адреса

Этот пункт тесно связан с предыдущим. Если вы увидели запросы на admin-ajax.php с неузнаваемых IP адресов, то необходимо проанализировать эти запросы, и понять чего именно пытается сделать злоумышленник. IP адреса можно заблокировать, например по шаблону с помощью fail2ban.

Слишком частая периодичность запросов

Как мы уже упомянули, на активной вкладке при редактировании записи, WordPress выполняет AJAX запрос каждые 15 секунд, т.е. для достижения 1 запроса в секунду на сервере, вам необходимо 15 редакторов с открытой вкладкой. Если вы являетесь единственным редакторов на вашем сайте, а запросов на admin-ajax.php с вашего IP адреса более 1 в секунду (мы встречали и 20/с), то стоит с этим разобраться.

Самой частой причиной подобного поведения является тема или плагин, поэтому следует их деактивировать и включать по порядку, чтобы найти источник. Здесь стоит также упомянуть плагин Heartbeat Control, который позволяет изменять стандартную конфигурацию Heartbeat в WordPress, но учтите, что отключив Heartbeat вы скорее временно скрываете проблему, а не устраняете ее.

Заключение

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

В случае с любой «лишней» нагрузкой на сервер, рекомендуем всегда проверять факты, средства профилирования — ваши лучшие друзья. Результаты порой бывают удивительными, когда например некоторые из очень популярных плагинов для WordPress оказываются самыми медленными.

Константин Ковшенин 12.02.2015 12.02.2015

Сооснователь журнала WP Magazine и первой конференции WordCamp в России. Работал в Automattic, WordPress.com, WooCommerce. Принимает активное участие в развитии ядра WordPress. Любимый язык программирования: Python.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!

Читайте также

Вебинары на WordPress.com

Вебинары на WordPress.com

Как добавить заголовок Sender в wp_mail()

Contributor Day после WordCamp SF 2013

WordPress Meetup в Санкт-Петербурге пройдет 14 октября

Локальный сервер для WordPress за 5 минут с VVV, VirtualBox и Vagrant

Раз в неделю, только все самое новое про WordPress и никакого спама!

Поиск по сайту

Бесплатная книга

Как защитить свой сайт от хакеров? Читайте в нашей электронной книге.

Вакансии

  • WordPress разработчик в компанию Grooni
  • Web-разработчик со знанием WordPress в Pravmir.ru
  • Ведущий WordPress-программист в компанию UpSolution
  • WordPress-ниндзя в команду Pressjitsu
  • WordPress разработчик в компанию Automattic

Ищете крутую тему для WordPress? Попробуйте Maker от ThemePatio:

Источник

Оцените статью