планировщик действий — фоновая обработка очереди заданий для WordPress | Планировщик действий
Очередь заданий WordPress с фоновой обработкой
Планировщик действий — это библиотека для запуска хука WordPress в будущем (или как можно скорее, в случае асинхронного действия). Каждый хук может быть запланирован с уникальными данными, чтобы обратные вызовы могли выполнять операции с этими данными. Хук также может быть запланирован для запуска в один или несколько раз.
Думайте об этом как о расширении до do_action()
, который добавляет возможность откладывать и повторять хук.
Так уж получилось, что эта функция также создает надежную очередь заданий для фоновой обработки больших очередей задач в WordPress. Благодаря добавлению ведения журнала и интерфейса администрирования он также обеспечивает отслеживание ваших задач, выполняемых в фоновом режиме.
Проверенная в боях фоновая обработка
Каждый месяц планировщик действий обрабатывает миллионы платежей за подписки, веб-перехватчики для WooCommerce, а также электронные письма и другие события для ряда других плагинов.
Было замечено, что на действующих сайтах обрабатываются очереди, превышающие 50 000 заданий, и выполняются ресурсоемкие операции, такие как обработка платежей и создание заказов, в 10 одновременных очередях со скоростью более 10 000 действий в час без негативного влияния на нормальную работу сайта.
Все это возможно на инфраструктуре и сайтах WordPress вне контроля автора плагина.
Планировщик действийспециально разработан для распространения в плагинах (и темах) WordPress — доступ к серверу не требуется. Если вашему плагину требуется фоновая обработка, особенно больших наборов задач, вам может помочь планировщик действий.
Как это работает
Планировщик действий хранит имя хука, аргументы и запланированную дату для действия, которое должно быть запущено в будущем.
Планировщик будет пытаться запускаться каждую минуту, присоединяясь в качестве обратного вызова к хуку 'action_scheduler_run_schedule'
, который планируется с помощью встроенной системы WordPress WP-Cron. Раз в минуту он также проверяет хук 'shutdown'
запросов администратора WP на наличие ожидающих действий, и если они есть, он инициирует очередь с помощью асинхронного запроса обратной связи.
При запуске планировщик действий будет проверять запланированные действия, срок выполнения которых совпадает или предшествует этому моменту времени, т. е. действия, запланированные для выполнения сейчас или когда-либо в прошлом. Действия, запланированные для асинхронного выполнения, то есть незапланированные, имеют нулевую дату, то есть они всегда будут выполняться независимо от того, когда происходит проверка.
Пакетная обработка фоновых заданий
Если есть действия, которые нужно обработать, планировщик действий выделит уникальную заявку на пакет из 25 действий и начнет обработку этого пакета. Процесс PHP, созданный для запуска пакета, затем продолжит обработку пакетов из 25 действий, пока не будет использовано 9 действий.0% доступной памяти или обрабатывается в течение 30 секунд.
В этот момент, если есть дополнительные действия для обработки, к сайту будет отправлен асинхронный циклический запрос для продолжения обработки действий в новом запросе.
Этот процесс и запросы замыкания на себя будут продолжаться до тех пор, пока не будут обработаны все действия.
Ведение домашнего хозяйства
Перед обработкой пакета планировщик удалит все существующие заявки на действия, которые находятся в очереди более пяти минут (или, точнее, в 10 раз больше разрешенного срока, который по умолчанию равен 30 секундам).
Планировщик действий также удалит все действия, которые были завершены или отменены более месяца назад.
Если действие выполняется более 5 минут, Планировщик действий будет считать, что время действия истекло, и помечает его как невыполненное. Однако, если все обратные вызовы, связанные с действием, будут успешно завершены через какое-то время после этого 5-минутного тайм-аута, его статус позже будет обновлен до завершенного.
Отслеживаемая фоновая обработка
Ваше фоновое задание выполнялось?
Никогда не оставайтесь в недоумении благодаря встроенному ведению записей планировщика действий.
Все события для каждого действия регистрируются в таблице actionscheduler_logs
и отображаются в административном интерфейсе.
События, регистрируемые по умолчанию, включают действия:
- создано Запуск
- (включая сведения о том, как он был запущен, например, через WP CLI или WP Cron)
- завершает
- терпит неудачу
В случае сбоя с ошибкой, которую можно записать, эта ошибка будет записана в журнал и видна в административном интерфейсе, что позволит отследить, что пошло не так в какой-то момент в прошлом на сайте, к которому у вас не было доступа чтобы в прошлом.
Кредиты
Планировщик действийразработан и поддерживается людьми из Automattic, а значительная часть ранней разработки была завершена Flightless.
Сотрудничество — это круто. Мы будем рады работать с вами над улучшением планировщика действий. Пулл-реквесты приветствуются.
Actions — wpDataTables — Плагин для таблиц и диаграмм WordPress
Actions — wpDataTables — Плагин для таблиц и диаграмм WordPressДействия WordPress – это удобный способ «подключиться» к различным плагинам без изменения их кода. По сути, «действия» — это определяемые пользователем функции, назначенные определенным меткам, которые вызываются ядром плагина в определенные моменты его выполнения. В отличие от фильтров действия не возвращают никаких данных, они просто выполняются.
Вы можете узнать больше об использовании действий WordPress и назначении своих функций действиям в WordPress Codex. Здесь мы предоставим список действий, определенных в плагине wpDataTables, которые вы можете использовать, чтобы настроить его для своих нужд.
Это действие выполняется перед получением метаданных таблицы из базы данных (параметры таблицы, ссылка на файл или SQL-запрос). Вы можете использовать его для вызова нужной вам функции или установки глобальной переменной.
Это действие выполняется перед получением метаданных столбцов из базы данных (настройки столбцов). Вы можете использовать его для вызова нужной вам функции или установки какой-либо глобальной переменной.
Это действие выполняется до начала рендеринга таблицы (с шорткодом или без него).
Это действие выполняется после того, как wpDataTables сохранит данные настроек (после того, как пользователь нажмет «Сохранить настройки» на странице настроек бэкенда).
Это действие выполняется после того, как wpDataTables сохранит данные таблицы (после того, как пользователь нажмет «Сохранить таблицу» на странице настроек бэкенда).
Это действие выполняется после того, как wpDataTables сохранит данные столбца (после того, как пользователь нажмет «Сохранить таблицу» на странице настроек бэкенда).
Это действие выполняется, когда страница настроек открыта в админке.
Это действие выполняется, когда пользователь открывает «Добавить новый wpDataTable» в админке.
Это действие выполняется, когда пользователь открывает страницу просмотра.
Это действие выполняется при первом сохранении новой таблицы: wpDataTables пытается сгенерировать таблицу на основе предоставленных данных и создает столбцы и таблицы в базе данных на основе результатов.
$type — тип таблицы (xls, csv, mysql, json, xml, php).
$content — это либо ссылка на файл источника данных, либо запрос MySQL.
$table – это объект wpDataTable (источник класса/class.wpdatatable.php).
$tableId — идентификатор описания таблицы в MySQL.
$frontendColumns — это массив объектов, где каждый объект является столбцом из внешнего интерфейса.
Это действие выполняется после того, как новый столбец будет вставлен в базу данных (когда плагин впервые сгенерирует столбцы).
$columnConfig — это массив параметров столбца, загружаемых из базы данных.
$tableId — идентификатор таблицы из MySQL.
Это действие выполняется перед получением данных AJAX для таблиц обработки на стороне сервера.
$tableId — это идентификатор таблицы из таблицы MySQL.
Это действие выполняется перед началом визуализации диаграммы.
$chartId — это идентификатор таблицы из таблицы MySQL.
Это действие выполняется после применения действия редактирования.
$formdata — массив ключей и значений для редактирования.
$rowId — поле идентификатора строки в таблице MySQL, которая была отредактирована.
$tableId — это идентификатор таблицы из таблицы плагинов MySQL (wp_wpdatatables).
Это действие вызывается перед удалением строки из внешнего редактора.
$rowId — значение столбца ID.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.
Это действие вызывается перед отображением формы фильтрации на странице.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.
Это действие вызывается после отображения формы фильтрации на странице.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.
Это действие вызывается перед отображением самой таблицы на странице.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.
Это действие вызывается после отображения таблицы на странице.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.
Это действие вызывается перед отображением первой строки таблицы на странице.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.
Это действие вызывается перед отображением строки таблицы на странице.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.
$rowIndex — индекс строки, начинающийся с нуля.
Это действие вызывается после отображения строки таблицы на странице.
$tableId — это идентификатор таблицы из таблицы wp_wpdatatables.