У меня есть база данных MySQL, которая обновляется каждую секунду или микросекунду. используя таблицу уведомлений, я должен найти правильного пользователя для отправки push-уведомления, существует несколько типов уведомлений. поэтому не все уведомления отправляются всем пользователям. Вместо этого я должен проверить, какой пользователь подписан на какое уведомление, и на основании этого я отправляю уведомление пользователям, пока оно работает правильно, но не точно.
Моя логика программы:
Сначала получать все новые уведомления из таблицы уведомлений, которая
в ожидании отправки.
$newnotification = get_all_newnotification();
Затем обрабатываете уведомление, чтобы проверить, подписан ли кто-либо на это уведомление? если да, то отправка push этому пользователю с использованием Firebase
foreach ($newnotification as $data) {
$findusers = mysqli($connection,"SELECT U.device_token FROM user_notification as UN INNER JOIN user as U on U.id = UN.user_id WHERE UN.notification_type = '{$data['type']}' ");
$user_token = [];
while($result = mysqli_fetch_assoc()) {
$user_token[] = $result['device_token'];
}
if(count($user_token) > 0) {
$firebase = new Firebase();
$notification_data['title'] = 'Title here';
$notification_data['description'] = 'Description goes here';
$firebase->send($user_token,$notification_data);
}
//here I'm updating notification sent flag in table so won't get next time
}
Так что это работает, но не так, как требуется, потому что, когда вышеуказанная программа завершена, в таблицу добавляется много новых уведомлений, пользователь получит задержку уведомления от 5 до 10 минут (зависит от времени выполнения вышеуказанной программы)
Кто-нибудь знает, как отправить уведомление как можно скорее?