LocKing
@LocKing
Не задавай вопросов — не услышишь лжи

Web PUSH-уведомления не отправляются по CRON?

Стоит задача: отправлять пользователям сайта Web PUSH уведомления, когда наступает определенное событие. Делать это необходимо максимально быстро (задержка не должна составлять более 1 минуты).

Поэтому решил не использовать всяческие сервисы, которые предоставляют такую возможность, а использовать базовое решение через Firebase Cloud Messaging, инструкция по которому подробно описана здесь Хабр

Суть в чём...Опуская js, проблема сейчас в доставке данных "пушей". Токен пользователя получен и записан в БД. Т.е. разрешение на получение сообщений получено, токен известен.

Каждую минуту запускается cron и выполняет php-скрипт, который при необходимости отправляет сообщение через curl на fcm.googleapis.com/fcm/send (а оттуда уже посылается запрос браузеру, что необходимо вывести push-уведомление).

$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $control->_connect_ini['google_url']);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $response = curl_exec($ch);
    curl_close($ch);


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

{
  "canonical_ids": 0,
  "failure": 0,
  "multicast_id": 5652500584254823832,
  "results": [
    {
        "message_id": "0:1527001372290285%2fd9afcdf9fd7ecd"
    }
  ],
  "success": 1

}


Не могу понять где собака зарыта.
  • Вопрос задан
  • 333 просмотра
Пригласить эксперта
Ответы на вопрос 1
@402d
начинал с бейсика на УКНЦ в 1988
из-за роскомнадзора.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы