Я разрабатываю плагин WordPress, который отправляет push-уведомления через Firebase Cloud Messaging (API FCM v1). Плагин прекрасно работает при отправке в небольшие темы (1-2 устройства), но приводит к зависанию всего сайта на 4-5 минут при отправке в тему с сотнями подписчиков.
Среда
Генерация токенов происходит быстро (~ 45 мс) – не узкое место
Замораживание происходит во время wp_remote_post()
Размер темы является ключевым моментом фактор:
1 устройство: быстро
Сотни устройств: зависание
Ресурсы сервера резко увеличиваются во время зависания
Ошибок PHP нет - код работает, просто медленно
Вопросы
Почему размер темы FCM влияет на производительность WordPress?
Занимает ли FCM больше времени для обработки больших тем на стороне сервера?
Ждет ли PHP, пока FCM завершит обработку всех устройства?
Является ли wp_remote_post() правильным подходом для этого?
Должен ли я использовать 'blocking' => false, чтобы предотвратить ожидание?
Будет ли работать собственный Curl с настройками таймаута лучше?
Какой шаблон рекомендуется для HTTP-запросов типа «запустил и забыл» в WordPress?
Система очередей (фоновая обработка WP)?
Внешняя служба/вебхук?
Другой HTTP-клиент?
Может ли это быть ограничением хостинга?
Ограничения по времени ожидания общего хостинга?
Конфигурация PHP-FPM?
Я ожидаю, что запрос AJAX вернется быстро (~ 1 секунду) независимо от размера темы, поскольку я просто отправляю один HTTP-запрос в FCM. FCM должен асинхронно обрабатывать разветвление на устройства на их стороне.
Я разрабатываю плагин WordPress, который отправляет push-уведомления через Firebase Cloud Messaging (API FCM v1). Плагин прекрасно работает при отправке в небольшие темы (1-2 устройства), но приводит к зависанию всего сайта на 4-5 минут при отправке в тему с сотнями подписчиков. Среда [list] [*][b]WordPress:[/b] 6.9
$response_code = wp_remote_retrieve_response_code($response); return $response_code === 200; } [/code] Что я заметил [list] [*][b]Генерация токенов происходит быстро[/b] (~ 45 мс) – не узкое место
[*][b]Замораживание происходит во время wp_remote_post()[/b]
[*][b]Размер темы является ключевым моментом фактор:[/b] [list] 1 устройство: быстро
[*]Сотни устройств: зависание
[/list]
[*][b]Ресурсы сервера резко увеличиваются[/b] во время зависания
[*][b]Ошибок PHP нет[/b] - код работает, просто медленно
[/list] Вопросы [list] [*][b]Почему размер темы FCM влияет на производительность WordPress?[/b] [list] Занимает ли FCM больше времени для обработки больших тем на стороне сервера?
[*]Ждет ли PHP, пока FCM завершит обработку всех устройства?
[/list]
[*][b]Является ли wp_remote_post() правильным подходом для этого?[/b] [list] Должен ли я использовать 'blocking' => false, чтобы предотвратить ожидание?
[*]Будет ли работать собственный Curl с настройками таймаута лучше?
[/list]
[*][b]Какой шаблон рекомендуется для HTTP-запросов типа «запустил и забыл» в WordPress?[/b] [list] Система очередей (фоновая обработка WP)?
[*]Внешняя служба/вебхук?
[*]Другой HTTP-клиент?
[/list]
[/list] [b]Может ли это быть ограничением хостинга?[/b] [list] [*]Ограничения по времени ожидания общего хостинга?
[*]Конфигурация PHP-FPM?
[/list] Я ожидаю, что запрос AJAX вернется быстро (~ 1 секунду) независимо от размера темы, поскольку я просто отправляю один HTTP-запрос в FCM. FCM должен асинхронно обрабатывать разветвление на устройства на их стороне.