Web PUSH (PHP, CURL, CRON)

211
03 июня 2018, 22:20

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

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

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

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

    $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
}

Не могу понять где собака зарыта.

READ ALSO
Вывод скриншотов с ip камер и данных 1С

Вывод скриншотов с ip камер и данных 1С

При взвешивании авто на автовесовой (Тара, Брутто) данные попадают в 1С 83 Как вывести значение при взвешивании и скриншоты с четырех IP камер...

175
Wordpress не видит файлы плагина

Wordpress не видит файлы плагина

вкратце поясню задачу - пишу небольшой плагин для авторизации, регистрации и прочих взаимодействий пользователя с сайтомВ одной части кода,...

193
PHP Fatal error: Allowed memory size of 4731174912 bytes exhausted. Где увеличить?

PHP Fatal error: Allowed memory size of 4731174912 bytes exhausted. Где увеличить?

Непонятно почему в один прекрасный день скрипт стал выбрасывать ошибку

216
Взять длительность трека из VK API

Взять длительность трека из VK API

Пишу скрипт на php! Я новичок и мне необходимо взять длительность музыкального трека из VKНедаво ВК закрыли эту возможность и передаётся лишь...

202