Как снизить нагрузку на скрипт при подключении среды WordPress?

166
23 февраля 2018, 19:02

Имеется cron php скрипт, который выполняет некоторые операции с БД. В этом скрипте я использую такие wp функции, как wp_insert_term(), wp_insert_post(),wp_cache_flush() и т.д. $wpdb так же используется.

Проблема в том, что на готовом сайте, с кучей установленных плагинов, данный скрипт потребляет намного больше памяти при одном только подключении WordPress.

Вот пример простого подключения:

$MEMORY = memory_get_usage();
require_once dirname(__FILE__) . '/../wp-load.php';
echo "Memory: " . (memory_get_usage() - $MEMORY ). PHP_EOL;

Результаты:

  1. Голый сайт: 34 072 112 байт
  2. Загруженный плагинами сайт: 95 157 104 байт

Есть вот такой вот вариант: define('SHORTINIT', true);, но он, как я понял, отключает все wp-функции, что не подходит.

Соответственно вопрос: я правильно понял, что активированные плагины, пожирают память и если да, то как подключить только необходимые мне wp-функции?

Answer 1

Имеется cron php скрипт, который выполняет некоторые операции с БД.

Сразу 2 ошибки - крон на php и запросы в БД.

  1. Во первых если нужен крон, то лучше использовать серверный. А если всё же нужен php, то в ВП есть свой php-крон.

  2. В базу лазить нельзя. Тем боле по крону, тем более по стороннему, тем более по стороннему на php.

При работе с ВП нужно использовать АПИ. В частности для работы с кроном из ВП - wp-сron, а для работы сторонних приложений с ВП - REST API

Соответственно вопрос: я правильно понял, что активированные плагины, пожирают память и если да, то как подключить только необходимые мне wp-функции?

Нет. Пожирают не "плагины" как таковые, а код. Можно использовать 100500 плагинов без ущерба сайту, а можно в тему прописать 10 строк и положить его при десятке внешних запросов.

В общем, рекомендую посмотреть доклады разработчиков ВП. В них есть и о причинах и о методах/способах локализации проблем.

https://wordpress.tv/2015/08/20/konstantin-kovshenin-wordpress-performance-killers/
https://wordpress.tv/2014/09/02/konstantin-kovshenin-scaling-wordpress/
https://wordpress.tv/2014/08/25/gennady-kovshenin-profiling-wordpress/
https://wordpress.tv/2013/08/19/konstantin-kovshenin-wordpress-site-speed/

Голый сайт: 34 072 112 байт

Если это показатели на внешней странице, то это ещё и хостинг плохой/не настроен.
Вот на не самом лучшем хостинге реальный сайт без плагинов кеширования и каких-либо серьёзных мер для оптимизации:

READ ALSO
Почему не работает $_POST?

Почему не работает $_POST?

Почему-то перестал работать $_POST со стороны обработчика,GET тоже не работает, ajax отправляет, но не доходит до php файлаОтправляю из файла "index

173
Некорректный вывод

Некорректный вывод

Всем привет! Мне нужно, чтобы в select выводились полученные данные из БД Для этого имеется в indexphp такой код:

184
Как отправить запрос в php?

Как отправить запрос в php?

Имеется такой код:

190
Как передать php массив в sql?

Как передать php массив в sql?

Добрый вечер! Есть HTML таблица, из которой конвертирую информацию в json, оттуда в php и далее в таблицу sqlЗастряла на последнем этапе, не понимаю,...

178